Android应用 - 想要在第一次调用MainActivity的onCreate()时显示Toast,而不是在设备旋转时再次显示

时间:2014-08-16 04:12:42

标签: android rotation boolean

我希望我的用户在应用程序开始时看到Toast,直到应用程序被杀死然后故意再次启动(不仅仅是在后台恢复)。

所以我设置了一个布尔值让我知道吐司是否已被吃掉并显示吐司如果它没有并设置布尔值吃掉,但旋转设备会重置所有内容,即使是布尔值。如何设置它以便布尔值不会在旋转时重置?

3 个答案:

答案 0 :(得分:4)

使用savedInstanceState参数保存布尔值的当前状态。

请参阅此帖:Saving Android Activity state using Save Instance State

答案 1 :(得分:1)

请参阅以下代码:

公共类YourActivity扩展了Activity {

private Boolean showToast=true;

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

   if(savedInstanceState==null){//  show your toast here}
   else{
      if(showToast){// show your toast here}
     }

}



  @Override
  public void onSaveInstanceState(Bundle savedInstanceState) {
     super.onSaveInstanceState(savedInstanceState);

         savedInstanceState.putBoolean("Toast_shown", true);

  }


     @Override
     public void onRestoreInstanceState(Bundle savedInstanceState) {
       super.onRestoreInstanceState(savedInstanceState);

       boolean myBoolean = savedInstanceState.getBoolean("Toast_shown");
       this.showToast=!myBoolean;

       }

}

答案 2 :(得分:0)

您可以通过多种方式执行此操作

最简单的解决方案 :: 使用标记来实现目标

public class MainActivity extends Activity {

     boolean toastFlag=false;

       @Override
       protected void onCreate(Bundle savedInstanceState) 
       {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         if(toastFlag==false){
         Toast.makeText(getApplicationContext(), "Hi-I-AM-A-TOAST-MESSAGE",Toast.LENGTH_LONG).show();
         toastFlag=true;
       }

     @Override
        public void onSaveInstanceState(Bundle savedInstanceState) 
        {
          super.onSaveInstanceState(savedInstanceState);
          savedInstanceState.putBoolean("MyBoolean", toastFlag);
        }

        @Override
        public void onRestoreInstanceState(Bundle savedInstanceState) 
        {
          super.onRestoreInstanceState(savedInstanceState);
          toastFlag= savedInstanceState.getBoolean("MyBoolean");
        }     

}