如何将EditText传递给另一个活动?

时间:2011-07-05 06:06:07

标签: android

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个对象。

任何人都可以给出想法吗?

由于

3 个答案:

答案 0 :(得分: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");
        }
    }
}

答案 1 :(得分:0)

嗯..使用Singleton静态类可以实现相同的效果。在一个活动中将您的edittext的引用存储在SingleTon类中,并在另一个活动中将其检索回来并实现您想要执行的操作。多数民众赞成在Java中可能解决您的问题之一。

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

答案 2 :(得分:0)

好吧,尽管对EditText Activity EditText的无效感到大吼大叫,我会说可以做到。例如,声明自己的类,它扩展Parcelable并实现public class MyEditText extends EditText implements Parcelable { //a lot of things to be done... } 接口

MyEditText

在这种情况下,您可以轻松地将Parcelable作为Activity发送给另一个Intent intent = new Intent(this,Name.class); MyEditText et=new MyEditText(this); intent.putExtra("key", et); startActivity(intent);

{{1}}

这种方法的确实实用性仍然存在争议。