繁体   English   中英

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

[英]How to pass EditText to another activity?

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 object。

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

谢谢

为什么不发送 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");
        }
    }
}

嗯..使用 Singleton static class 可以实现相同的效果。 将编辑文本的引用存储在 SingleTon class 中的一个活动中,然后在另一个活动中检索它并实现您想要做的事情。 对于您的问题,这是 Java 中可能的解决方法之一。

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

好吧,尽管人们对将EditText发送到Activity毫无用处大喊大叫,但我想说它可以做到。 例如声明您自己的 class 扩展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);    

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM