启动画面重定向错误活动android

时间:2015-02-01 14:32:38

标签: android redirect

基本上我有一个启动页面的处理程序,它会在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();

        }

    }

3 个答案:

答案 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