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

Android 如何在意图返回到旧活动后设置edittext值?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我在用安卓。我在活动a中有一个按钮和编辑文本。当我点击按钮时,它会带着一个意图转到活动B。我在活动B中有一个ListView。我单击列表项并将值存储在字符串中,然后再次返回活动a。现在我想在活动A的EditText字段中设置值。是否可能???是的,可能。您需要简单地将值放入捆绑包中,并通过intent将该捆绑包发送给活动A Intent intent = new Intent(ActivitA.this, ActivtyB.class); intent.putExtra(name, value

我在用安卓。我在活动a中有一个按钮和编辑文本。当我点击按钮时,它会带着一个意图转到活动B。我在活动B中有一个ListView。我单击列表项并将值存储在字符串中,然后再次返回活动a。现在我想在活动A的EditText字段中设置值。是否可能???

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

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

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

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

您可以在意图中的活动之间传递数据。以下是在您的案例中如何构造代码:

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

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

  • 在活动B中:单击某个项目时,将字符串存储在一个intent中,并调用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();
    
  • 在活动A:override 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);
                }
            }
        }
    }
    

  • 您可以在意图中的活动之间传递数据。以下是在您的案例中如何构造代码:

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

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

  • 在活动B中:单击某个项目时,将字符串存储在一个intent中,并调用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();
    
  • 在活动A:override 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);
                }
            }
        }
    }
    

  • 您尝试的acommplish有两个部分:将intent值本身传递给另一个 活动(大多数答案已经解释过) 第二,如何修改EditText或TextView本身,因为如果您尝试 要在OnActivityResultMethod中执行此操作,它将无法直接工作,并且必须进行以下变通:

    您可以强制使用EditText.SetText(“blablabla…”);在你的积极性结果里面 通过3个简单步骤:

  • 将布局重新加载到活动中
  • 重新绑定编辑文本
  • 像往常一样使用SetText
  • 在这个示例代码中,我传递了一个带有和intent的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()); 
            }
    

    您尝试的acommplish有两个部分:将intent值本身传递给另一个 活动(大多数答案已经解释过) 第二,如何修改EditText或TextView本身,因为如果您尝试 要在OnActivityResultMethod中执行此操作,它将无法直接工作,并且必须进行以下变通:

    您可以强制使用EditText.SetText(“blablabla…”);在你的积极性结果里面 通过3个简单步骤:

  • 将布局重新加载到活动中
  • 重新绑定编辑文本
  • 像往常一样使用SetText
  • 在这个示例代码中,我传递了一个带有和intent的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()); 
            }
    

    使用OnActivityResult()将结果从活动B传递到活动A。当您转到活动B以将字符串设置到Bundleyes中时,可以在活动A中执行此onresume()方法。将值从活动B传递到活动A。在活动Ause OnActivityResult()中的onresume方法中设置edittext的值将结果从活动B传递到活动A。当您转到活动B将字符串设置为BundleEyes时,您可以在活动A中执行此onresume()方法。将值从活动B传递到活动A。在活动A的onresume方法中设置edittext的值公共静态最终活动B_请求=100;显示错误“final invalid type”应为公共静态final int ACTIVITYB_REQUEST=100;我忘了添加变量类型,即
    int
    …您需要将ACTIVITYB\u请求声明为类中的成员变量,而不是在任何方法中。请参阅更新的答案。我用于edittext的焦点操作,而不是用于传递意图的按钮操作。是否可能?让我们公开静态最终活动b_请求=100;显示错误“final invalid type”应为公共静态final int ACTIVITYB_REQUEST=100;我忘了添加变量类型,即
    int
    …您需要将ACTIVITYB\u请求声明为类中的成员变量,而不是在任何方法中。请参阅更新的答案。我用于edittext的焦点操作,而不是用于传递意图的按钮操作。有可能吗?让我们