【问题标题】:Run activity only once, then always run the main one只运行一次活动,然后总是运行主要活动
【发布时间】:2015-05-09 18:57:24
【问题描述】:

正如标题所说,场景是: 首次使用应用程序时,显示屏幕 A。 完成屏幕 A 后,按钮将引导您进入屏幕 B。 从现在开始,当您启动应用程序时,屏幕 B 将始终是主“屏幕”(活动?)。 我正在尝试这 2 天,但我无法得到它。 有人请解释得详细一点,或者更好地给我一个code.rar,以便我研究它。我要疯了!!!

【问题讨论】:

    标签: java android xml android-activity launch


    【解决方案1】:

    只需在 AndroidManifest.xml 和 Activity A onCreate() 中将您的 Activity A 声明为启动器 Activity,您就可以简单地执行此操作

    private SharedPreferences mSharedPreferences;
    private Editor mEditor;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a);
    
        mSharedPreferences = getSharedPreferences("yourPrefsFileName", Context.MODE_PRIVATE));
        mEditor = mSharedPreferences.edit();
    
        if (mSharedPreferences.getBoolean("isfirstTime", true)) {
            mEditor.putBoolean("isFirstTime",false);
            mEditor.apply();
        }else{
             startActivity(new Intent(this, ActivityB.class));
             overridePendingTransition(0, 0);
             finish();
          }
    }
    

    【讨论】:

    • 谢谢你成功了!!!!!!!!!!!!顺便说一句,编辑 editor.putBoolean 和 editor.apply 到 mEditor,所以遇到这个问题的人不会更加困惑。谢谢大佬!!!
    【解决方案2】:

    所有你必须像这样检查

     SharedPreferences prefs = getSharedPreferences("mySHaredpref", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        boolean isFirst = prefs.getBoolean("isfirstTime", true);
        if(isFirst) {
            Intent intent = new Intent(this, ActivtyA.class);
            editor.putBoolean(KEY_IS_FIRST_TIME, false);
            editor.commit();
            startActivity(intent);
        }
        else{
          Intent intent = new Intent(this, MainActivty.class);
          startActivity(intent);
        }
    

    【讨论】:

    • code 会起作用吗?我试过了,但突然 android studio 出了问题,无法在模拟器上加载……而且我的电脑有点慢……“else”语句的代码是正确的吗?
    • 我会在我该死的电脑加载它后立即尝试,希望它有效。感谢大侠的帮助
    • 当我运行应用程序时,B Activity 会按预期显示。当我关闭应用程序并重新打开它时,它会冻结并且工作室上的终端会不停地显示一些乱码。你知道为什么吗?如果您可以发布代码示例,那就太容易了
    【解决方案3】:
    public class FirstActivity extends Activity {
    
       public void onCreate(Bundle saved){
          super.onCreate();
    
          SharedPreferences prefs = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    
         if (!prefs.getBoolean("firstStart", true)){
              startActivity(this, SecondActivity.class);
              finish(); // Finish the current one, is like forwarding directly to the second one
          }
    
       }
    }
    

    当您完成显示第一个活动时,只需将共享首选项布尔标志设置为 false:

    prefs.getEditor.setBoolean("firstStart", false).commit();
    

    【讨论】:

      【解决方案4】:
      SharedPreferences sp = getSharedPreferences("checking",MODE_PRIVATE);
      
      String data = sp.getString("check", "");
      
      if (data.equals("success")) {
      
      //one time proccess code
      
      //with follow code
      
      SharedPreferences sp= getSharedPreferences("checking",MODE_PRIVATE);
      
      Editor e1 = sp.edit();
      
      e1.putString("check","success");
      
      e1.commit();
      
      
      } else {
      
      // code for main
      
       Intent intent = new Intent(this, MainActivty.class);
       startActivity(intent);
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        • 2014-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多