图片1.这是我的create_layout。
图2.当我点击添加成员按钮时,这是我的自定义联系人列表。
图3.现在这是问题所在。按下选择按钮时。我想将选定的联系人值列回我的第一个图像布局。但它打开了我的第一个布局的副本并出现在那里。
这是我的代码。
@Override
public void onClick(View v) {
StringBuilder checkedcontacts= new StringBuilder();
System.out.println("............"+ma.mCheckStates.size());
for(int i = 0; i < name1.size(); i++)
{
if(ma.mCheckStates.get(i)==true)
{
checkedcontacts.append(name1.get(i).toString());
checkedcontacts.append("\n");
}
else
{
System.out.println("..Not Checked......"+name1.get(i).toString());
}
}
Intent i = new Intent (getApplicationContext(), CreateTab.class);
i.putExtra("str",checkedcontacts.toString());
startActivity(i);
finish();
}
});
我知道问题在于我创建了一个intent,以便当用户单击select按钮时,它将指向CreateTab类,它将重复onCreate。但是我怎么能再次阻止onCreate?
答案 0 :(得分:0)
请勿再次启动上一个活动,只需更新选择器活动的结果,然后致电finish()
。
Intent resultIntent = new Intent(this, PreviousActivity.class);
resultIntent.putExtra("selection",checkedcontacts.toString());
setResult(RESULT_OK,resultIntent);
finish();
答案 1 :(得分:0)
你应该使用onActivityResult()方法来读取返回的结果。
在CreateTab.class中执行此操作
Intent i = new Intent(getApplicationContext(), AddMember.class);
startActivityForResult(i, 100); // 100 is some code to identify the returning result
从新创建的活动中读取结果的方法
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 100){
String str = data.getExtras().get("str");
}
}
使用StartActivityForResult()时将结果发送回旧活动
Intent i = new Intent();
i.putExtra("str", checkedcontacts.toString());
// Setting resultCode to 100 to identify on old activity
setResult(100,i);
并关闭AddMember活动
finish()
所以你的点击事件应该是这样的;
@Override
public void onClick(View v) {
StringBuilder checkedcontacts= new StringBuilder();
System.out.println("............"+ma.mCheckStates.size());
for(int i = 0; i < name1.size(); i++)
{
if(ma.mCheckStates.get(i)==true)
{
checkedcontacts.append(name1.get(i).toString());
checkedcontacts.append("\n");
}
else
{
System.out.println("..Not Checked......"+name1.get(i).toString());
}
}
Intent i = new Intent();
i.putExtra("str", checkedcontacts.toString());
// Setting resultCode to 100 to identify on old activity
setResult(100,i);
finish();
}
});
http://developer.android.com/training/basics/intents/result.html