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()

这样可以避免您后来的困惑。