onActivityResult()中的代码未执行

时间:2012-04-24 18:11:55

标签: java android

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

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

主要活动:

公共类ONTTMainActivity扩展了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);

} 

第二项活动:

公共类ONTTSplashActivity扩展了Activity {

@覆盖
    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函数中的代码也永远不会被执行。我尝试使用吐司来查看是否已达到。

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

2 个答案:

答案 0 :(得分:0)

您从ONTTSplashActivity开始ONTTMainActivity,以便将结果从ONTTSplashActivity返回到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();
    }
}

答案 1 :(得分:0)

OnActivityResult()必须在您的第一个活动中,而不是在第二个活动中。 从第一个活动开始,您只需要调用startActivityForResukts(),这样您的第一个活动就会期望第二个活动的结果。