0

共有設定で動作するアプリがあります (初めて) が、実行する最初のアクティビティは、設定された設定を確認するアクティビティです。したがって、アプリが読み込まれると、この「黒い画面」が表示され、正しいアクティビティが読み込まれます。

私のアプリケーションは 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>
4

1 に答える 1

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"

于 2013-02-11T18:39:54.187 に答える