我有2个活动,我称之为Map活动的主要活动,以及当应用程序启动Map活动时我调用了Question活动的第二个活动,然后单击播放按钮,并使用 StartActivityForResult启动问题活动(),然后当您正确回答问题时,应该销毁问题活动并再次创建,并检查正确答案问题的数量并更改布局。然后,如果你得分为5,则应该销毁问题活动并显示地图活动,但这不会发生。这是我的代码
Map.class
public void OnClick_Question(View v){
Intent i = new Intent(MapActivity.this, QuestionActivity.class);
startActivityForResult(i, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(SharedPrefs.TAG, "OnActivityResult Entry");
if (resultCode == RESULT_OK) {
Log.d(SharedPrefs.TAG, "MAPActivity OnActivityResult Entry resultCode");
AssignContentView(requestCode);
}
}
Question.class
public void Next() {
Intent i = new Intent(this, QuestionActivity.class);
startActivity(i);
finish();
}
public void LevelUp() {
Log.e(SharedPrefs.TAG, "LevelUp");
super.finish();
finish(); /*This don't happen*/
}
当我看到LogCat向我显示此消息时:
09-01 11:23:03.911 901-1485/? W/ActivityManager﹕ startActivity called from finishing ActivityRecord{43386100 u0 com.example.gbb/.QuestionActivity t50 f}; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=com.example.gbb/.QuestionActivity }
为什么我这样做,是因为我想根据你的分数改变Map Activity的布局。
我做错了什么?
答案 0 :(得分:0)
我遇到了同样的问题。我通过在Android Manifest中添加android:launchMode="singleTask"
来解决它。希望它也适合你。
答案 1 :(得分:0)
我通过关闭Instant Run并重新运行我的代码解决了这个问题。
答案 2 :(得分:0)
您可以尝试以下代码:
我们需要将请求代码保留在全局和静态变量中,以便在onActivityResult
方法中访问
private static final int REQUEST_CODE = 111;
public void OnClick_Question(View v){
Intent i = new Intent(MapActivity.this, QuestionActivity.class);
startActivityForResult(i, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.d(SharedPrefs.TAG, "OnActivityResult Entry");
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CODE:
Log.d(SharedPrefs.TAG, "MAPActivity OnActivityResult Entry resultCode");
AssignContentView(requestCode);
break;
default:
break;
}
}
}
我认为你的Map
课没有问题,问题出在第二课。你需要在那个意图中设置RESULT_OK
,然后你可以检查if (resultCode == RESULT_OK)
在onActivityResult
方法中。您可以在下面找到该代码
Intent intent = new Intent();
setResult(activity.RESULT_OK, intent);
finish();
希望这有用:)