从Activity2传递到Activity1,然后再次反映从活动1到活动2的更改

时间:2013-09-23 11:10:48

标签: android android-activity android-listview

我有2项活动,Activity1Activity2

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

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

我在imageview中的Activity2中显示了从listview图像和textview中检索到的数据,在Activity1中显示了editext resp。现在我在Activity1中对editext和imageview进行了一些更改,我需要将此更改再次传递给活动2中的列表视图图像和文本。

有人可以帮助我使用代码来完成这项工作吗?

3 个答案:

答案 0 :(得分:1)

更好的想法是使用startActivityForResult。

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

答案 1 :(得分:0)

在当前的activity1中,创建一个意图

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

然后在另一个activity2中,检索这些值。

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

答案 2 :(得分:0)

FirstActivity使用SecondActivity方法<{1}}致电startActivityForResult()

代码:

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

SecondActivity中设置要返回FirstActivity的数据。

例如:在SecondActivity中,如果要在项目上发回数据集onclicklistener并使用此代码:

Intent returnIntent = new Intent();  returnIntent.putExtra( “图像”,图像);  returnIntent.putExtra( “标题”,标题);  的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