许多Android应用程序要求用户首次打开该应用程序时,活动只能显示一次。在这里,让我们学习如何在我们自己的android应用程序中实现此功能。
为什么我们需要一个活动只出现一次?
- 它可用于获取用户的登录信息或其他一次性信息,从而使用户无需在每次打开应用程序时都经历输入信息的麻烦。
- 它可用于显示一些用户可能不希望每次看到的有关该应用程序的信息。
- 它可以用于显示一次性动画,从而为应用程序添加更好的UI。
在这个例子中,让我们使用SharedPreferences来实现这个项目。请参阅本文,以详细了解SharedPreferences : Android中的Shared Preferences(带有示例) 。
方法
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
步骤2:使用仅出现一次的活动
使用activity_main.xml文件:
让我们从应该只出现一次的活动开始。在此示例中, activity_main.xml将仅包含ImageView 和一个TextView 。这是activity_main.xml文件的外观:
activity_main.xml
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
String prevStarted = "yes";
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedpreferences = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
if (!sharedpreferences.getBoolean(prevStarted, false)) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(prevStarted, Boolean.TRUE);
editor.apply();
} else {
moveToSecondary();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void moveToSecondary(){
// use an intent to travel from one activity to another.
Intent intent = new Intent(this,SecondaryActivity.class);
startActivity(intent);
}
}
activity_secondary.xml
SecondaryActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class SecondaryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondary);
}
}
AndroidManifest.xml
该活动将如下所示:
使用MainActivity。 Java文件:
MainActivity。在此示例中, Java文件将包含该应用程序的大部分逻辑。让我们从创建一个名为prevStarted的字符串开始,并将其设置为某个值。现在在onResume()中 方法,检查SharedPreferences中是否已经具有prevStarted的值。由于在首次启动该应用程序时它将评估为false,因此请启动MainActivity (我们希望仅出现一次)并在SharedPreferences中设置prevStarted的值。现在,无论何时应用再次启动,它都将始终检查是否已经将prevStarted的值存储在SharedPreferences中,此值从现在开始将始终为true。因此,从现在开始,它将始终启动SecondaryActivity (我们希望始终显示在其中)。这是我们的MainActivity。 Java文件如下所示:
主要活动。Java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
String prevStarted = "yes";
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedpreferences = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
if (!sharedpreferences.getBoolean(prevStarted, false)) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(prevStarted, Boolean.TRUE);
editor.apply();
} else {
moveToSecondary();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void moveToSecondary(){
// use an intent to travel from one activity to another.
Intent intent = new Intent(this,SecondaryActivity.class);
startActivity(intent);
}
}
步骤3:创建始终显示的活动
使用activity_secondary.xml文件:
现在,我们已经完成了应用程序的几乎所有逻辑,并将创建我们希望始终显示的活动activity_secondary.xml 。对于此示例,它将仅包含ImageView和TextView 。这是我们的activity_secondary.xml的样子:
activity_secondary.xml
该活动将如下所示:
使用SecondaryActivity。 Java文件:
与SecondaryActivity无关。 Java文件。这就是SecondaryActivity的方式。 Java文件如下所示:
SecondaryActivity。Java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class SecondaryActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secondary);
}
}
步骤4:配置AndroidManifest.xml
重要的是要检查启动应用程序时打开的第一个活动是MainActivity。 Java (我们希望仅出现一次的活动)。为此,请打开AndroidManifest.xml文件,并确保我们在activity标签内有一个intent-filter标签,该标签应该只出现一次。这是我们的AndroidManifest.xml文件的样子:
AndroidManifest.xml