从保存文件加载活动

时间:2013-09-11 20:27:16

标签: android int sharedpreferences

直截了当地说,我做了一个游戏,一旦用户完成一个级别,他们就会转移到下一个活动。所以基本上Activity1完成然后Activity 2加载等等。 我想保存他们获得的活动然后在主菜单上有一个继续按钮,它将在下次播放时加载它。到目前为止,我所做的是使用Int将进度保存到共享首选项。但我不知道如何调用值,以便继续按钮知道加载哪个活动,如果这样做。下面是我用来保存用户进度的代码,我以这种方式使用Int的感觉可能是错误的方式,所以任何建议都会很棒。我对android很新,所以很好的明确答案会让我不知所措哈哈哈哈:)

这是我成功的启动画面,我进行了保存:

    public class success1 extends Activity {


    private boolean mIsBackButtonPressed;
    private static final int SPLASH_DURATION = 2000; // 2 seconds


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences sp =
                this.getSharedPreferences("GameProgress",0);
                SharedPreferences.Editor editor = 
                sp.edit();
                editor.putInt("scene1",1);
                editor.commit();

        setContentView(R.layout.level_success);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);



        MediaPlayer player;
        AssetFileDescriptor afd;
        try {
        // Read the music file from the asset folder
        afd = getAssets().openFd("correct.mp3");
        // Creation of new media player;
        player = new MediaPlayer();
        // Set the player music source.
        player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),afd.getLength());
        // Set the looping and play the music.
        player.setLooping(false);
        player.prepare();
        player.start();
        } catch (IOException e) {
        e.printStackTrace();
        finish();
        }

        Handler handler = new Handler();


        handler.postDelayed(new Runnable() {

            public void run() {


                finish();

                if (!mIsBackButtonPressed) {
                    // start the home screen if the back button wasn't pressed already 
                    Intent intent = new Intent(success1.this, scene2.class);
                    success1.this.startActivity(intent);
                    android.os.Process.killProcess(android.os.Process.myPid());
                    finish();
               }

            }

        }, SPLASH_DURATION); // time in milliseconds (1 second = 1000 milliseconds) until the run() method will be called

    }

        @Override
        public void onBackPressed() {

        // set the flag to true so the next activity won't start up
        mIsBackButtonPressed = true;
        super.onBackPressed();

    }
}

这只是一个带有继续按钮的调试主菜单:

public class DebugMain extends Activity {

    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.debugmenu);

        addListenerOnButton();

    }

    public void addListenerOnButton() {

        //Select a specific button to bundle it with the action you want
        button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {


            }

        });

    }

}

1 个答案:

答案 0 :(得分:0)

但是我无法确定如何调用这些值,以便”继续“按钮知道在哪个活动加载时会加载。

在加载主菜单时启动时,应打开共享首选项文件并读取int值。如果您的游戏中有10个级别,则可以存储一个键/值对。 level:numOfLevel。

当按下继续按钮时,您可以编写一个开关(userLevel){案例1:...案例2:....其中每个案例将根据您在加载时读取的级别启动不同的活动。

真的不是很多:)如果它是一个简单的级别结构,就像你说的那样。