[英]Android activity does not finish and does not launch previous activity
我有2个活动,主要活动是我称为Map活动,第二个活动是我在应用程序启动Map活动时称为Question活动,然后单击播放按钮,然后使用StartActivityForResult()启动Question活动,然后已回答正确的问题,应销毁并再次创建Question活动,并检查正确回答的问题数并更改布局。 那么如果您的得分为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 }
之所以这样做,是因为我想根据您的得分来更改“地图活动”的布局。
我做错了什么?
我有同样的问题。 我通过在Android清单中添加android:launchMode="singleTask"
了该问题。 希望它也对您有用。
我通过关闭“即时运行”并重新运行代码来解决了这一问题。
您可以尝试以下代码:
我们需要将请求代码保留在全局变量和静态变量中,以便在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
,然后可以在onActivityResult
方法中检查if (resultCode == RESULT_OK)
。 您可以在下面找到该代码
Intent intent = new Intent();
setResult(activity.RESULT_OK, intent);
finish();
希望这会有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.