0

我有一个 android 应用程序,我想在全新安装后打开一个不同的活动,然后是我的主要活动。

我使用 startActivityForResult() 和 SharedPreferences 进行了尝试。这是我的代码:

主要活动:

公共类 ONTTMainActivity 扩展 Activity {

静态最终 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);

} 

第二个活动:

公共类 ONTTSplashActivity 扩展活动 {

@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();
    }
}

问题是即使第二个活动结束,onActivityResult 函数中的代码也永远不会执行。我尝试使用吐司来查看是否已达到。

我见过几个类似的问题,但我已经尝试了所有解决方案,但它不起作用。

4

2 回答 2

0

您开始ONTTSplashActivityONTTMainActivityONTTSplashActivity 到 ONTTMainActivity 获取结果,所以放入onActivityResult第一个ONTTMainActivity 活动:

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() 必须在您的第一个活动中,而不是在第二个活动中。因为只有从第一个活动开始,您才调用 startActivityForResukts(),所以您的第一个活动期望第二个活动的结果。

于 2012-04-24T18:15:04.180 回答