共有設定で動作するアプリがあります (初めて) が、実行する最初のアクティビティは、設定された設定を確認するアクティビティです。したがって、アプリが読み込まれると、この「黒い画面」が表示され、正しいアクティビティが読み込まれます。
私のアプリケーションは Navigation アクティビティを拡張しており、このアクティビティから実行しようとしましたが、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>