保存實例後我需要共享「int audio」來檢查()方法做幾個操作。我有一個「信息」選項:當我點擊我看到信息對話框,我想聽音頻(當我點擊「取消」時停止它)。但是,當我旋轉模擬器,我有另一個音頻明星。如何在多種方法中共享一個變量?
int audio;
static int Info;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
int Info = savedInstanceState.getInt("dialoginfo");
int audio = savedInstanceState.getInt("audio");
}
if(Info != 0)
{
Info();
}
private void Info(){
Info = 1;
sobCheck();
LayoutInflater li = LayoutInflater.from(this);
View view = li.inflate(R.layout.info, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view).create();
TextView text=(TextView) findViewById(R.id.infoView1);
builder.setCancelable(false);
builder.setPositiveButton("Chiudi", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Info = 0;
mp.stop();
mp.reset();
mp.release();
mp = null;
audio = 0;
dialog.cancel();
}
});
builder.show();
}
private void sobCheck(){
if (audio == 0){
mp = MediaPlayer.create(this, R.raw.sob);
mp.start();
audio = 1;
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("audio", a);
旋轉屏幕後, 「音頻」 始終爲 「0」
請注意Java命名約定:變量名以小寫字母開頭。所以,'static int info;'而不是'static int Info;'。 – ZeroOne