每次显示吐司打开Android应用程序

时间:2015-10-27 13:38:55

标签: java android android-toast

每次打开应用程序时,我都希望展示欢迎祝酒。上面的代码正在运行,但每次屏幕旋转时它都会显示欢迎的吐司。

       protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
       Toast.makeText(getApplicationContext(), "WELCOME!!!" , Toast.LENGTH_LONG).show();

有没有办法在应用的每个开头只显示一次吐司?

清单:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.im.gernan" >   
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application
    android:name="com.example.im.gernan.MyAppCtx"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

3 个答案:

答案 0 :(得分:2)

如评论中所述,添加一个标志以指示是否显示。 一个地方可能是活动本身,但活动可以在应用程序处于活动状态时完成并重新打开。应用程序上下文的生命周期只知道onCreate和onDestroy并保持洞穴应用程序会话,这是为了让你的toast真的只在应用程序启动后才会出现。

示例:

这可以是应用程序上下文类,在清单中作为应用程序引用。

public MyAppCtx extends Application {
  public boolean toasted = false;
}

然后在任何活动中你都可以这样做:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    if (!((MyAppCtx)getApplicationContext()).toasted) {
        Toast.makeText(getApplicationContext(), "WELCOME!!!" , Toast.LENGTH_LONG).show();
        ((MyAppCtx)getApplicationContext()).toasted = true;
    }

    ...
}

现在,当此活动开始时,如果您已经显示了欢迎,则会检查应用程序上下文。如果没有,则显示并设置开关。就这样。玩得开心

答案 1 :(得分:1)

如果您的吐司已经显示,您可以在ApplicationContext中使用布尔值或在某个地方存储单例 - 如果是,则不再显示吐司

答案 2 :(得分:0)

声明一个变量

static boolean value=false;
if(value==false)
{
value=true;
//show welcome toast
}