作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
保存实例后,我需要将“int audio”共享给 check() 方法以执行多项操作。我有一个“信息”选项:当我点击时,我看到信息对话框并且我想听音频(当我点击“取消”时停止它)。但是当我旋转模拟器时,我有另一个音频明星。
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”
最佳答案
问题是您已经创建了局部范围的变量,这些变量在此处隐藏了您的应用程序级变量:
@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();
}
}
这声明并初始化了两个新变量Info 和audio,它们的范围限定为您的if 检查并在之后立即丢弃。它们实际上不会更改您在 onCreate 方法之外声明的应用程序级变量。尝试将其更改为:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
Info = savedInstanceState.getInt("dialoginfo");
audio = savedInstanceState.getInt("audio");
}
if (Info != 0) {
Info();
}
}
这可以防止 Info 和 audio 在您的本地范围内被重新声明,而应该导致您已经声明的变量被初始化。
关于java - 如何在多个方法之间共享一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13769155/
我是一名优秀的程序员,十分优秀!