【问题标题】:Automatically change the activity of starting another activity自动更改开始另一个活动的活动
【发布时间】:2016-06-07 08:45:57
【问题描述】:

我有两个活动,一个活动是“AppIntro”,另一个是“主页”。我想显示一次“AppIntro”,然后应用程序启动时不显示它直接进入主页。

有一种方法可以从 activity.java 操作意图过滤器。

    <activity
        android:name=".DefaultIntro"
        android:label="@string/title_activity_default_intro"
        android:theme="@style/FullscreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.Launcher">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

【问题讨论】:

    标签: android manifest intentfilter


    【解决方案1】:

    您可以将 AppIntroActivity 中的布尔标志保存为 false。

    当你第一次打开这个 Activity 时,flag 是 false 并且会加载这个 Activity。

    当你从这个活动移动到另一个活动时,将标志设置为 true。

    在随后返回 AppIntroActivity 时,如果标志为真,则立即移动到第二个活动。

    private SharedPreferences sharedPreferences;
    
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    final boolean hasOpenedBefore = sharedPreferences.getBoolean("HASOPEN", false);
    
    if(hasOpenedBefore){
    // move immediately to the next Activity
    // secondly, remove it from the top activity stack
    }
    

    【讨论】:

      【解决方案2】:

      我认为没有任何方法可以操作清单文件中定义的意图过滤器。你可以这样做

      1. 当您打开DefaultIntro 活动时,在SharedPreference 中保存一个布尔值并将其设置为false
      2. 下次继续检查这个值,如果是false直接跳转到下一个活动而不设置其布局。

      DefaultIntro.javaonCreate

      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
      Boolean showIntro = prefs.getBoolean("showIntro", true);
      if(showIntro)
      {
          SharedPreferences.Editor editor = prefs.edit();
          editor.putBoolean("showIntro", false);
          editor.commit();
      }
      else
      {
          Intent intent = new Intent(this, MainActivity.java);
          startActivity(intent);
          finish();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 2013-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多