sharedpreferences - 仅在单击第一个按钮时获取getInt

时间:2014-09-25 04:23:06

标签: android button onclick sharedpreferences

在球赛期间

场景 我点击退出并返回主菜单然后退出应用程序,一旦我再次启动应用程序,我可以点击“继续” “从主菜单返回到我离开的游戏或点击新游戏并重新开始。

问题 当我删除onclick方法时,共享首选项代码有效但我只想让它在我点击“继续”时工作,否则无论什么按钮都会读取它从主菜单中按下。

如何让它仅从“继续”按钮读取共享首选项,并在点击新游戏按钮时启动忽略共享首选项的新游戏。

例如。

public class GMActivity extends Activity {

Button conButton;
Button nButton;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    conButton = (Button) findViewById(R.id.ConGame);
    nButton = (Button) findViewById(R.id.NGame);


    // Continue Button
    conButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Bundle setting = getIntent().getBundleExtra("setting");
            Intent newIntent = new Intent(GMaActivity.this,
                    GActivity.class);
            newIntent.putExtra("setting", setting);
            startActivity(newIntent);


        }
    });

    // New Game Button
    nButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(GMActivity.this,
                            GActivity.class);
            startActivity(intent);
        }
    });

 public class GActivity extends ActionBarActivity {


  private int RWIDTH = 70;
// + a whole bunch of other unrelated stuff that i cut-out to make viewing easier. 

public static final String PREFS_NAME = "MyPrefsFile";

 @Override
  protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

setContentView(R.layout.main);
Button CntButton = (Button) findViewById(R.id.ConGame);
CntButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    RWIDTH = settings.getInt("RWIDTH", RWIDTH);

  }
});


}

 protected void onStop(){
  super.onStop();

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();

editor.putInt("RWIDTH", RWIDTH);

editor.commit();


}

2 个答案:

答案 0 :(得分:0)

您可以根据按钮单击添加额外的布尔标志以继续或新游戏。如果您需要更多说明,请发布完整代码

答案 1 :(得分:0)

使用布尔标志设置是否应在游戏活动中使用RWIDTH,如下所示:

conButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Bundle setting = getIntent().getBundleExtra("setting");
        Intent newIntent = new Intent(GMaActivity.this,
                GActivity.class);
        newIntent.putExtra("useRWIDTH", true);
        startActivity(newIntent);

    }
});

// New Game Button
nButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(GMActivity.this,
                        GActivity.class);
        intent.putExtra("useRWIDTH", false);
        startActivity(intent);
    }
});

然后在GMaActivity类中使用

Intent intent = getIntent();
boolean useRWIDTH = intent.getBooleanExtra("useRWIDTH", false);

然后根据useRWIDTH的值,您可以选择使用或不使用SharedPreferences

中的RWIDTH值
相关问题