当我点击 android 中的 minimize/back 按钮时,activity 消失了

activity gets disappear when i click minimize/back button in android

在我的应用程序中,我有一个 activity,如下图所示 [![在此处输入图片描述][1]][1]

如果我单击按钮 "Add Patient",它将重定向到另一个 activity。如下图所示

如果我在 "NewPatient" activity 中单击主页按钮,它会显示 "My Patients" activity 和 "NewPatient" activity disappears.Can请建议当应用程序处于 "NewPatient" activity.

时按下主页按钮时如何保留 "NewPatient" activity

清单即时消息使用:

<activity
 android:name=".activity.patient.PatientsActivity"
 android:parentActivityName=".activity.MainActivity"/>

<activity
 android:name=".activity.patient.PatientFormActivity"
 android:parentActivityName=".activity.patient.PatientsActivity" />

只需使用 Intent 即可转到 HomeActivity;

  @Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) // Press Back Icon
    {
        Intent i=new Intent(NewPatient.this,HomeActivity.class);
        startActivity(i);

    }

    return super.onOptionsItemSelected(item);
}

你的代码在哪里? 但是你可以在你的代码中使用这一行

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        //do somethings you want
    }
    return super.onKeyDown(keyCode, event);
}

第一个解决方案。基于启动模式。

你可以把"My Patients"activity移到"New Patient"activity前面。

  1. 在清单
  2. 中将android:launchMode="singleTask"设置为"My Patients"
  3. 覆盖 "New Patient" activity 的 onBackPressed() 方法,并从中启动 "My Patients",而不调用 super。

您可以阅读有关启动模式的更多信息here

第二种方案。基于捆绑

  1. 从 "My Patients" activity.
  2. 开始 "New Patient" activity 结果
  3. 重写 "New Patient" activity 的 onBackPressed() 方法,并将数据保存到 Intent,就像将其保存到 onSaveInstanceState[= 中的 Bundle 一样49=].
  4. 在调用 super.onBackPressed()
  5. 之前,通过调用
    setResult 将保存的数据提供给 "My Patients" activity
  6. 处理 "My Patients" onActivityResult() 内保存的数据 activity
  7. 使用保存的数据从 "My Patients" activity 启动 "New Patient" activity 的新实例。

第二个更合适,痛苦更小。

我认为您不需要针对此问题进行任何额外的操作。您在传递意图或任何清单时在其他地方犯了错误。如果您发现任何有用的东西,请使用以下示例:

从我的 MainActivity.java on textview click listener 我开始了另一个 activity:

findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getBaseContext(),Activity2.class));
            }
        });

这些活动的清单是:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ccc.Whosebug">

    <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/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

如你所愿。当我们回到 app.Hope 时,Activity2 保持打开状态,它对您有帮助。