我有一个使用共享首选项的应用程序(第一次),但是,我要运行的第一个活动是检查设置的首选项的活动。因此,当应用程序加载时,您会看到这个“黑屏”,然后加载正确的活动。
我的应用程序正在扩展一个导航活动,我确实尝试将它从这个活动中运行出来,但是,我没有 onStart、onCreate() 等......因为它只是在膨胀 Actionbar Sherlock 菜单。如果我添加 onStart() 我得到一个错误。如果我添加,我会得到一个无限循环:
onStart(){getPrefs();super.onStart();}
那么,任何人都可以与我分享我应该如何/在哪里运行它,以便用户不会得到“黑屏”然后是正确的活动?我只想在应用程序启动时启动正确的活动。
这是我目前加载活动的方式:
public class MainActivity extends NavigationActivity {
private AQuery aq;
SharedPreferences myPrefs;
private String lp;
private String TAG = "GET PREFS";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// show no back arrow
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_firstload);
aq = new AQuery(this);
getPrefs();
aq.id(R.id.tv).text("Loading...");
}
private void getPrefs() {
// Get the xml/preferences.xml preferences
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
lp = prefs.getString("defaultreport", "");
Log.v(TAG, lp);
if (lp.equals("esac")) {
Toast.makeText(MainActivity.this, "ESAC", Toast.LENGTH_LONG)
.show();
Intent i = new Intent(MainActivity.this, ESACActivity.class);
startActivity(i);
} else if (lp.equals("sac")) {
Toast.makeText(MainActivity.this, "SAC", Toast.LENGTH_LONG)
.show();
Intent i = new Intent(MainActivity.this, SACActivity.class);
startActivity(i);
} else if (lp.equals("msar")) {
Toast.makeText(MainActivity.this, "MSAR", Toast.LENGTH_LONG)
.show();
Intent i = new Intent(MainActivity.this, MSARActivity.class);
startActivity(i);
}
}
}
我的 NavigationActivity 包含:
onCreateOptionsMenu(Menu menu)
and
onOptionsItemSelected(MenuItem item)
编辑::
我曾考虑在启动时添加启动画面以适应此设置更改,但希望看到另一个简化的解决方案。
编辑编辑::
我尝试了@MrZander 的建议,但在我的清单中遇到了问题。
<application
android:allowBackup="true"
android:icon="@drawable/acricon"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock"
android:name="com.Conditions.MainActivity" //This loads the PREFS fine
>
<activity
android:name="com.Conditions.SACActivity" //However, defining this negates the PREFS. My apps first screen is defined by the PREFS.
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/title_activity_main"
android:screenOrientation="portrait"
android:theme="@style/Theme.Sherlock"
android:uiOptions="splitActionBarWhenNarrow" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>