如何在意图回到旧活动后设置edittext值?

时间:2014-01-29 10:45:45

标签: android android-intent android-activity

我正在使用Android。我在Activity A中有一个按钮和EditText。当我点击按钮时,它会转到带有Intent的Activity B.我在Acivity B中有一个ListView。我点击了列表项并将值存储在字符串中,然后再次使用Intent返回活动A.现在我想在活动A的EditText字段中设置值。是否可以????

3 个答案:

答案 0 :(得分:3)

您可以在Intents中的活动之间传递数据。以下是您在案例中构建代码的方法:

  1. 在ActivityA类中创建一个静态变量,该变量将用作请求代码:

    public class ActivityA extends Activity {
    
        //declare a static variable here, in your class
        public static final int ACTIVITYB_REQUEST = 100;    
    
  2. 活动A:单击按钮时,创建一个Intent和startActivityForResult()

    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, ACTIVITY_REQUEST);
    
  3. 在活动B中:当点击一个项目时,将你的字符串存储在一个意图中并调用setResult()和finish(),这将带你回到活动A:

    //create an Intent
    Intent resultIntent = new Intent();
    
    //add your string from the clicked item
    resultIntent.putExtra("string_key", clicked_item_string);
    
    //return data back to parent, which is Activity A
    setResult(RESULT_OK, resultIntent);
    
    //finish current activity
    finish();
    
  4. 在活动A中:覆盖onActivityResult(),检查返回的数据并相应地设置EditText

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        //check if we are back from Activity B...
        if (requestCode == ACTIVITYB_REQUEST) {
            //and all went fine...
            if (resultCode == RESULT_OK) {
                //if Intent is not null
                if (data != null) {
    
                    //get your string 
                    String newString = data.getExtras().getString("string_key");
    
                    //set your EditText
                    someEditText.setText(newString);
                }
            }
        }
    }
    

答案 1 :(得分:1)

是的,这是可能的。您需要简单地将值放入包中,并通过intent将该包发送到活动A.

Intent intent  = new Intent(ActivitA.this, ActivtyB.class);
intent.putExtra(name, value);
startActiivty(intent);

答案 2 :(得分:0)

您要尝试的内容有两部分:将意图值本身传递给另一部分 活动(大多数答案已经解释过了) 第二,如何修改EditText或TextView本身,因为如果你试试 要在OnActivityResultMethod中执行它,它不会直接工作,并且必须执行此解决方法:

你可以强制EditText.SetText(“blablabla ...”);在您的OnActivity结果中 在3个简单的步骤中:

  1. 将您的布局重新加载到您的活动中
  2. 重新绑定您的EditText
  3. 像往常一样使用SetText。
  4. 在此示例代码中,我使用和传递URL字符串并将其写入TextView:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {       
        if (resultCode == RESULT_OK) 
        {
            QRdata= data.getStringExtra("QRURL");
    
            if (QRdata.length()>0)
            {
                                //Step1
                setContentView(R.layout.activity_confirmpackage); 
                                //Step2
                TextView qrtxt=(TextView)this.findViewById(R.id.qrurl); 
                                //Setp 3,Voilà!
                qrtxt.setText(QRdata.toString()); 
            }