当多个活动调用时,应用程序失败startActivityForResult
问题描述:
我有两个活动使用startActivityForResult调用第三个活动,但在第三个活动完成之后,应用程序失败之前onActivityResult被调用。当我最初只有一个活动调用它时,它运行良好,如果我使用它的调试器,它通常意味着未初始化。我的代码如下:当多个活动调用时,应用程序失败startActivityForResult
活动答:
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ActivityA.this, AddActivity.class);
startActivityForResult(intent, ADD_CATEGORY);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADD_CATEGORY && resultCode == RESULT_OK) {
if (data.getCharSequenceExtra("Added") != null) {
String category = data.getCharSequenceExtra("Added").toString();
categoryList.add(category);
}
}
}
活动B:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ActivityB.this, AddActivity.class);
startActivityForResult(intent, ADD_ITEM);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADD_ITEM && resultCode == RESULT_OK) {
String item = data.getCharSequenceExtra("Added").toString();
if (currentList == null) {
currentList = new ArrayList<String>();
}
currentList.add(item);
Collections.sort(currentList);
}
}
活动C:
public class AddActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
// Return added item to the calling activity
Intent intent = new Intent();
CharSequence text = edittext.getText();
intent.putExtra("Added", text);
setResult(RESULT_OK, intent);
finish();
return true;
}
return false;
}
});
}
}
我缺少的东西,或会是这样一个Android错误?
答
请确认您是按您的通话活动设置结果AddActivity
...显示您的logcat ..
答
虽然它可能是不太可能在这种情况下,它总是值得一提:
可能是不为活动设置额外的最常见原因开始startActivityForResult是,他们SingleTask活动。
在新活动甚至开始之前,所有在其自己的任务中运行的活动都会导致使用RESULT_OK调用onActivityResult()。
在SingleTask活动中调用setResult()是毫无意义的,不会做任何有用的事情。
请问您可以放置错误日志吗?并将onclicklistener格式化为代码:) – Arkde
logcat对崩溃有何说法?你能包括崩溃转储吗? – Femi
logcat中没有显示出来。我需要打开什么吗?我不认为有一个崩溃转储。对不起,我是Android和Eclipse的新手,所以我只是把事情搞清楚。 – kaz