Android仿真器中的FORCE CLOSE错误
问题描述:
我在学习android,所以我编写了这段代码来切换电话铃声模式。代码编译没有问题,我在Android Manifest中输入内容,将内容视图设置为所需的布局,但是我运行此应用程序,出现Force关闭错误。谁能告诉我,为什么会出现强制关闭错误,以便在未来的我应该是找出问题myself.Here是代码:Android仿真器中的FORCE CLOSE错误
package com.umer.practice2;
import android.R.bool;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;
public class RingerMode extends Activity implements View.OnClickListener {
ToggleButton tb;
ImageView Riv;
TextView tv;
AudioManager mRing;
boolean silent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ringermode);
tb.setOnClickListener(this);
InitializeShit();
mRing=(AudioManager) getSystemService(AUDIO_SERVICE);
}
private void InitializeShit() {
// TODO Auto-generated method stub
tb= (ToggleButton) findViewById(R.id.ringTB);
tv= (TextView) findViewById(R.id.ringTV);
Riv= (ImageView) findViewById(R.id.ringIV);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
checkMode();
if(silent)
{
Riv.setImageResource(R.drawable.mysplash);
}else
{
Riv.setImageResource(R.drawable.myscreen);
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
checkMode();
}
private void checkMode() {
// TODO Auto-generated method stub
int temp = mRing.getRingerMode();
if(temp==AudioManager.RINGER_MODE_SILENT)
{
tv.setText("Silent");
Riv.setImageResource(R.drawable.mysplash);
silent= true;
}else
if(temp==AudioManager.RINGER_MODE_NORMAL)
{
tv.setText("Normal");
Riv.setImageResource(R.drawable.myscreen);
silent= false;
}
}
非常感谢
答
你需要看一看在logcat的看看会发生什么。见Logcat | Android Developers。
找到崩溃的堆栈跟踪,它指向您的问题。如果你自己弄不清楚,请在你的问题中复制/粘贴logcat。
在这个非常的情况下,要初始化之前引用tb
:
tb.setOnClickListener(this);
在这一点上,tb
仍然null
,所以NullPointerException
发生。此外
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ringermode);
InitializeShit();
tb.setOnClickListener(this);
mRing=(AudioManager) getSystemService(AUDIO_SERVICE);
}
,我建议使用有关方法和变量命名Java的约定:为了解决这个问题,更改代码这样
- 类先从资金:如
MyClass
- 变量以小写字母开头:例如
myVariable
- 方法以小写字母开头:例如
myMethod()
这样可以避免您后来的困惑。