0

新規インストール後にメインのアクティビティとは別のアクティビティを開きたい Android アプリケーションがあります。

startActivityForResult() と SharedPreferences を使用してこれを試しました。これが私のコードです:

主な活動:

public class ONTTMainActivity extends Activity {

static final int REQUEST_CODE = 5;

@Override    
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    SharedPreferences settings = getSharedPreferences("prefs", 0);
    boolean firstRun = settings.getBoolean("firstRun", true);

    if(firstRun){

        startActivityForResult(
            new Intent(this, ONTTSplashActivity.class), REQUEST_CODE);
    }

    setContentView(R.layout.activitymain);

} 

2 番目のアクティビティ:

public class ONTTSplashActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activityonttsplash);

    final Button btnSkip = (Button) findViewById(R.id.button_skip);
    btnSkip.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {

            setResult(RESULT_OK);
            finish();       
         }
     });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    Toast.makeText(ONTTSplashActivity.this, "Toast Reached", Toast.LENGTH_LONG).show();

    if (resultCode == RESULT_OK) {
            SharedPreferences settings = getSharedPreferences("ONTT_prefs", 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("firstRun", false);
            editor.commit();
    }
}

問題は、2 番目のアクティビティが終了しても、onActivityResult 関数のコードが実行されないことです。届いているかトーストを使ってみました。

同様の質問をいくつか見ましたが、すべての解決策を試しましたが、うまくいきません。

4

2 に答える 2

0

ONTTSplashActivity から ONTTMainActivity に結果を取得するために開始ONTTSplashActivityしているので、最初の アクティビティに入れます。ONTTMainActivityonActivityResultONTTMainActivity

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    Toast.makeText(ONTTMainActivity .this, "Toast Reached", Toast.LENGTH_LONG).show();

    if (resultCode == RESULT_OK) {
            SharedPreferences settings = getSharedPreferences("ONTT_prefs", 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("firstRun", false);
            editor.commit();
    }
}
于 2012-04-24T18:13:44.827 に答える
0

OnActivityResult() は、2 番目のアクティビティではなく、最初のアクティビティにある必要があります。最初のアクティビティからのみ startActivityForResukts() を呼び出しているため、最初のアクティビティは 2 番目のアクティビティからの結果を期待します。

于 2012-04-24T18:15:04.180 に答える