我有一个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函数中的代码也永远不会被执行。我尝试使用吐司来查看是否已达到。
我已经看过几个类似的问题,但我已经尝试了所有解决方案,但它没有用。
答案 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(),这样您的第一个活动就会期望第二个活动的结果。