Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新启动应用程序后重新打开上次打开的活动_Java_Android_Android Activity - Fatal编程技术网

Java 重新启动应用程序后重新打开上次打开的活动

Java 重新启动应用程序后重新打开上次打开的活动,java,android,android-activity,Java,Android,Android Activity,我需要能够在应用程序关闭和手机重启后重新打开上次打开的活动 我指的是和。在第二个链接中,我在标记答案的评论中遇到了与OP相同的问题,但解决方案对我不起作用 我可以在上次打开的活动中启动应用程序,但单击以前的活动会返回一个空白屏幕。按照第二个链接的建议将finish()添加到DispatcherActivity后,它会关闭应用程序并显示一条日志消息: W/IIInputConnectionWrapper:在非活动InputConnection上显示状态图标 我已经搜索了该错误的解决方案,但它们涉及

我需要能够在应用程序关闭和手机重启后重新打开上次打开的活动

我指的是和。在第二个链接中,我在标记答案的评论中遇到了与OP相同的问题,但解决方案对我不起作用


我可以在上次打开的活动中启动应用程序,但单击以前的活动会返回一个空白屏幕。按照第二个链接的建议将finish()添加到DispatcherActivity后,它会关闭应用程序并显示一条日志消息:

W/IIInputConnectionWrapper:在非活动InputConnection上显示状态图标

我已经搜索了该错误的解决方案,但它们涉及使用“connection.close()”或与此无关的HTTP问题

我也尝试过类似的替代方案,但它们也不起作用

关于重新启动手机后重新打开上次打开的屏幕,声明onSavedInstanceState不适用于重新启动的手机

这是我的AndroidManifest的代码

<activity
        android:name=".Activity.TakeoverMainActivity">

    </activity>
    <activity android:name=".Activity.TakeoverNextActivity" />
    ...
    <activity android:name=".Activity.DispatcherActivity"
        android:launchMode="singleTop"
        android:windowSoftInputMode="stateVisible|adjustResize"
        android:alwaysRetainTaskState="false">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
如有任何解决方案或建议,将不胜感激。多谢各位


更新:SadiqMdAsif已经解决了我在评论中的问题。我的问题是,我在第二个活动中使用了finish(),而不是开始一个新的意图。

你的意思是当用户再次打开应用程序时打开上一个活动吗?“但单击上一个活动会返回一个空白屏幕。”这意味着什么?@SadiqMdAsif是一个完全白色的空白活动。我在问题中提到的第二个链接的回答者说,这是因为DispatcherActivity为空,所以它显示DispatcherActivity。你的意思是
backbutton
press?然后,
覆盖
on backpressed
方法以切换到所需的
活动
@SadiqMdAsif not backbutton。我从第一个活动启动应用程序,单击第二个活动,然后在第二个活动关闭应用程序。我重新打开应用程序,它将加载第二个活动。如果我单击按钮转到第三个活动,它会正确显示,但是如果我单击按钮转到第二个活动的第一个活动,它是白色活动。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dispatcher);

    Class<?> activityClass;

    try {
        SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
        activityClass = Class.forName(
                prefs.getString(LAST_ACTIVITY, TakeoverMainActivity.class.getName()));
    } catch(ClassNotFoundException ex) {
        activityClass = TakeoverMainActivity.class;
    }

    Intent intent = new Intent(this, activityClass);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    finish();

}
@Override
protected void onPause() {

    super.onPause();

    SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
    SharedPreferences.Editor activityEditor = prefs.edit();
    activityEditor.putString(LAST_ACTIVITY, getClass().getName());
    activityEditor.commit();

}