2011-07-05 66 views
2
Intent intent = new Intent(this,Name.class); 
intent.putExtra("key", et.getText().toString()); 
startActivity(intent); 

Intent intent = getIntent(); 
String str = intent.getStringExtra("key"); 
tv.setText(str); 

从使用上面的代码我可以得到一个字符串值在其他活动,但我需要editText对象在另一个活动。如何将EditText传递给其他活动?

任何人都可以给Idea吗?

谢谢

+1

为什么你需要将'EditText'对象传递给另一个'Activity'? –

+2

无法理解人们为什么需要EditText对象而不是其值? –

+1

为什么你想要将editText传递给另一个活动?可以给出适当的理由。 –

回答

5

为什么不发送ID然后在接收器Activity上使用findViewByid()?希望这有助于:

Intent intent = new Intent(); 
String name="textView"; 
int value=EditText.getID(); 
intent.putExtra(name, value); 
setResult(RESULT_OK, intent); 

在接收器的活动:

private static final int REQUEST_CODE=1; 
private int id; 
private EditText et; 
private Intent i; 

i = new Intent(this,Name.class); 
startActivityForResult(intent, REQUEST_CODE); 
et = (EditText)findViewById(id); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) 
    { 
     if (data.hasExtra("textView")) 
     { 
      //Get the selected file. 
      id = data.getExtras().getInt("textView"); 
     } 
    } 
} 
+0

哦,它很好谢谢很多 –

0

嗯..使用Singleton静态类可以达到同样的效果。将参考文件存储在SingleTon类中的edittext中,并将其返回到另一个活动中,并实现您想要执行的操作。这是在Java中解决您的问题的可能方法之一。

就android SDK而言,您无法将Intent中的视图obj引用传递给另一个活动。

0

好了,尽管所有的破口大骂有关发送EditTextActivity的无用我想说的是可以做到的。例如声明自己的类扩展EditText,也实现Parcelable接口

public class MyEditText extends EditText implements Parcelable 
{ 
     //a lot of things to be done... 
} 

在这种情况下,你将能够轻松地发送MyEditTextParcelable另一个Activity

Intent intent = new Intent(this,Name.class);  
MyEditText et=new MyEditText(this); 
intent.putExtra("key", et);  
startActivity(intent);  

可以肯定的效用的这种做法是仍然有争议。

相关问题