【问题标题】:How to open recent avtivity after app reopen in android studio如何在android studio中重新打开应用程序后打开最近的活动
【发布时间】:2021-07-06 16:18:15
【问题描述】:

如何在 android studio 中重新打开应用后打开最近的activity 例如,我们创建一个图书应用程序 然后重新打开应用后,打开我们所在的最后一页

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.Demo4">
    <activity android:name=".MainActivity2"></activity>
    <activity android:name=".MainActivity"
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>



       

【问题讨论】:

  • Android Studio 得到了什么?

标签: java android android-activity


【解决方案1】:

你使用SharedPreferences

例如:

为最后一个活动创建一个字符串

String lastActivity="";

存储最后一个活动

    protected void onDestroy() {
    super.onDestroy();
    lastActivity = "MainActivity";

    // store activity Name
    final SharedPreferences prefs =  this.getSharedPreferences("PREFERENCE_ACTIVITY",
            Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("activity", lastActivity);
    editor.apply();
}

做出决定:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
    String myActivity = prefs.getString("activity", "defValue");
    
    if (myActivity.equals(lastActivity)){
        startActivity(new Intent(this , FirstAcitvity.class ));
    }else {
        startActivity(new Intent(this , SecondActivity.class ));
    }

参考更多SharedPreferences

代码

public class MainActivity extends AppCompatActivity {

String lastActivity = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button one , two , three , four;

    one = findViewById(R.id.one);
    one.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            lastActivity = "one";
            startActivity(new Intent(getApplicationContext() , MainActivity2.class).putExtra("PWD" , "one"));
            saveData();
        }
    });

    two = findViewById(R.id.two);
    two.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            lastActivity = "two";
            startActivity(new Intent(getApplicationContext() , MainActivity3.class).putExtra("PWD" , "two"));
            saveData();
        }
    });

    three = findViewById(R.id.three);
    three.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            lastActivity = "three";
            startActivity(new Intent(getApplicationContext() , MainActivity4.class).putExtra("PWD" , "three"));
            saveData();
        }
    });

    four = findViewById(R.id.four);
    four.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            lastActivity = "four";
            startActivity(new Intent(getApplicationContext() , MainActivity5.class).putExtra("PWD" , "four"));
            saveData();
        }
    });



}

private void saveData() {
    String storeMine = lastActivity;
    Log.e("PWD" , storeMine);

    // store activity Name
    final SharedPreferences prefs =  this.getSharedPreferences("PREFERENCE_ACTIVITY",
            Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("activity", storeMine);
    editor.apply();
}

private void loadData() {
    SharedPreferences prefs = getSharedPreferences("PREFERENCE_ACTIVITY", MODE_PRIVATE);
    String myActivity = prefs.getString("activity", "");

    Log.e("myActivity" , myActivity);

    switch (myActivity){
        case "one":{
            startActivity(new Intent(getApplicationContext() , MainActivity2.class).putExtra("PWD" , "one"));
            break;
        }
        case "two":{
            startActivity(new Intent(getApplicationContext() , MainActivity3.class).putExtra("PWD" , "two"));
            break;
        }
        case "three":{
            startActivity(new Intent(getApplicationContext() , MainActivity4.class).putExtra("PWD" , "three"));
            break;
        }
        case "four":{
            startActivity(new Intent(getApplicationContext() , MainActivity5.class).putExtra("PWD" , "four"));
            break;
        }


    }
}

@Override
protected void onStart() {
    super.onStart();
    loadData();
}

}

【讨论】:

  • 谢谢,但如果我有两个以上的活动怎么办?
  • @KrishnaGameStudio 将if 更改为switch 条件
  • 你能不能给一个代码,我正在尝试但不工作。我有 10 个活动
  • @KrishnaGameStudio 我更新了我的code
【解决方案2】:

创建一个默认活动作为启动器活动 `public class Default extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_default);

 SharedPreferences mPrefs = getSharedPreferences("IDvalue",0);


    String str = mPrefs.getString("activity", "1");
    if (str.equals("1")) {

        Intent intent = new Intent(Default.this,MainActivity.class);
        startActivity(intent);
        Toast.makeText(getApplicationContext(),"Hello 1",Toast.LENGTH_SHORT).show();
    } else if (str.equals("2")){

        Intent intent = new Intent(Default.this,MainActivity2.class);
        startActivity(intent);
    }
}
public void clickD(View view)
{
    Intent intent = new Intent(Default.this,MainActivity.class);
    startActivity(intent);
}

}`

//在 MainActivity 中保存首选项时使用: `公共类 MainActivity 扩展 AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences mPrefs = getSharedPreferences("IDvalue", 0);
   SharedPreferences.Editor editor = mPrefs.edit();
    editor.putString("activity","1");
    editor.apply();
}
public void click(View view)
{
    Intent intent = new Intent(MainActivity.this,MainActivity2.class);
    startActivity(intent);
}

}`

//在 MainActivity2 中保存首选项时使用: ` 公共类 MainActivity2 扩展 AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    SharedPreferences mPrefs = getSharedPreferences("IDvalue", 0);
    SharedPreferences.Editor editor = mPrefs.edit();
    editor.putString("activity","2");
    editor.apply();
}

}`

【讨论】:

  • 希望我的回答能解决您的问题。请接受我的回答。不要让自己回答并接受它。这是一个不好的做法。我花费了宝贵的时间来解决您的问题。
  • 它不工作,但感谢您的宝贵时间
【解决方案3】:

您可以尝试使用 Android 清单中定义的启动模式。尝试单个任务。让我知道这是否有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多