【问题标题】:Passing from Activity2 to Activity1 and then again reflecting changes from Activity 1 to Activity 2从 Activity2 传递到 Activity1,然后再次反映从 Activity 1 到 Activity 2 的变化
【发布时间】:2013-09-23 11:10:47
【问题描述】:

我有 2 个活动,Activity1Activity2

在 Activity1 中,我有一个 EdiTextImageView。单击按钮时,Activity2 将启动。

在 Activity2 中,我有一个列表视图。它包含ImageTextView

我已经在 Activity1 中的 imageview 和 editext resp 中分别显示了从 Activity2 中的 listview image 和 textview 检索到的数据。现在我对 Activity1 中的 editext 和 imageview 进行了一些更改,我需要再次将这些更改传递给 Activity 2 中的 listview 图像和文本。

有人可以帮我编写代码来完成这项工作吗?

【问题讨论】:

  • 现在,您已经说明了您的需求。请显示一些您一直在处理的相关代码。它可以帮助我们试图帮助你的人。

标签: android android-activity android-listview


【解决方案1】:

更好的办法是使用 startActivityForResult。

与此类似的问题: How to manage `startActivityForResult` on Android?

【讨论】:

    【解决方案2】:

    在您当前的活动1中,创建一个意图

    Intent i = new Intent(getApplicationContext(), Activity2.class);
    i.putExtra(key, value);
    startActivity(i);
    

    然后在另一个活动 2 中,检索这些值。

    Bundle extras = getIntent().getExtras(); 
    if(extras !=null) {
        String value = extras.getString(key);
    }
    

    【讨论】:

      【解决方案3】:

      从您的FirstActivity 使用startActivityForResult() 方法调用SecondActivity

      代码:

      Intent i = new Intent(this, SecondActivity.class);
      startActivityForResult(i, 1);
      

      在您的SecondActivity 中,将您想要返回的数据设置为FirstActivity

      例如:在SecondActivity 中,如果您想发回数据,请在项目上设置一个 onclicklistener 并使用此代码:

      意图 returnIntent = new Intent(); returnIntent.putExtra("image",image); returnIntent.putExtra("title",title); setResult(RESULT_OK,returnIntent);
      完成();

      如果用户没有选择任何列表项并按下Back Button。 在您的MainActivity 中使用此代码。

      @Override
      public void onBackPressed() {
          Intent returnIntent = new Intent();
          setResult(RESULT_CANCELED, returnIntent);        
          finish();
      }
      

      现在在 FirstActivity 类中为 onActivityResult() 方法编写以下代码

      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      
        if (requestCode == 1) {
      
           if(resultCode == RESULT_OK){      
               String image=data.getIntExtra("result");
               String title=data.getStringExtra("title");
               ImageView img = (ImageView) findViewById(R.id.imageid);
               TextView txt = (TextView) findViewById(R.id.txtid);
               image.setImageResource(image);
               txt.setText(title);
           }
           if (resultCode == RESULT_CANCELED) {    
               //Write your code if there's no result
           }
        }
      }//onActivityResult
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        相关资源
        最近更新 更多