基本上我有一个启动页面的处理程序,它会在5秒后重定向到主菜单。
但是,我还有一个首次设置时可以看到的设置页面,但是发生的事情是它认为这是一个启动页面并在x秒后被重定向。我需要这个不重定向x秒,只需要启动屏幕' MainActivity'重定向。
主要问题:
首次设置加载首选项。 问题:它在5秒后重定向。
应该发生什么: 首次设置加载首选项。 允许用户输入详细信息并保存。 在下次启动时,会出现启动页面,该页面会在5秒后重定向。
Heres是我的代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final Intent mainIntent = new Intent(MainActivity.this, MainMenu.class);
MainActivity.this.startActivity(mainIntent);
MainActivity.this.finish();
}
}, 5000);
// get shared preferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
// first time run?
if (pref.getBoolean("firstTimeRun", true)) {
// start the preferences activity
startActivity(new Intent(getBaseContext(), Preferences.class));
//get the preferences editor
SharedPreferences.Editor editor = pref.edit();
// avoid for next run
editor.putBoolean("firstTimeRun", false);
editor.commit();
}
}
答案 0 :(得分:0)
我重新安排了你的代码,说出你想要发生的事情。
应该发生什么:第一次设置加载首选项。允许用户输入详细信息并保存。在下次启动时,会出现启动页面,该页面会在5秒后重定向。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
// get shared preferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
// first time run?
if (pref.getBoolean("firstTimeRun", true)) {
// start the preferences activity
startActivity(new Intent(this, Preferences.class));
//get the preferences editor
SharedPreferences.Editor editor = pref.edit();
// avoid for next run
editor.putBoolean("firstTimeRun", false);
editor.commit();
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final Intent mainIntent = new Intent(MainActivity.this, MainMenu.class);
startActivity(mainIntent);
finish();
}
}, 5000);
}
}
}
答案 1 :(得分:0)
据我所知,这应该可以解决你的问题
public class MainActivity extends Activity {
private static final int REQUESTCODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
Toast.makeText(this, "MainActivity", Toast.LENGTH_SHORT).show();
// get shared preferences
SharedPreferences pref = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
// first time run?
if (pref.getBoolean("firstTimeRun", true)) {
// start the preferences activity
startActivityForResult(new Intent(getBaseContext(),Preference.class), REQUESTCODE);
// get the preferences editor
SharedPreferences.Editor editor = pref.edit();
// avoid for next run
editor.putBoolean("firstTimeRun", false);
editor.commit();
} else {
startMainMenu();
}
}
public void startMainMenu() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
final Intent mainIntent = new Intent(MainActivity.this,
MainMenu.class);
MainActivity.this.startActivity(mainIntent);
MainActivity.this.finish();
}
}, 5000);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUESTCODE) {
if (resultCode == Activity.RESULT_OK) {
startMainMenu();
}
}
}
}
在设置首选项调用功能' setResult()'
后的首选项活动中public class Preference extends Activity{
@Override
protected void onCreate(Bundle savedInstance){
/**
Add necessary preferences to shared preference
**/
if(sharedPreference successfully entered){
setResult(RESULT_OK);
}else{
setResult(RESULT_CANCELED);
}
finish();
}
有关详细信息http://developer.android.com/reference/android/app/Activity.html#StartingActivities
我希望这有助于你......
答案 2 :(得分:0)
您是否尝试将优先活动中的活动结果设置为RESULT_OK