我有一个使用共享首选项的应用程序(第一次),但是,我要运行的第一个活动是检查设置首选项的活动。因此,当应用程序加载时,您将获得此“黑屏”,然后加载正确的活动。
我的应用程序正在扩展导航活动,我确实尝试将其从此活动中运行,但是,我没有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)
EDIT ::
我考虑在启动时添加启动画面以适应此设置更改,但我们希望看到另一个简化的解决方案。
编辑编辑::
我尝试了@MrZander的建议,但在我的Manifest中遇到了一个问题。
<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>
答案 0 :(得分:0)
我会覆盖应用的Application
http://developer.android.com/reference/android/app/Application.html
有些事情如下:
public class MyApplication extends Application{
@Override
public void onCreate() {
//Shared prefs here
}
}
在您的清单<application>
标记中添加此属性:android:name="com.your.package.MyApplication"