Hello每个人我都试图在textview中显示电池电量,但它给了我错误。 我的Logcat错误和代码如下所示。
01-03 21:28:14.992: E/AndroidRuntime(9599): FATAL EXCEPTION: main
01-03 21:28:14.992: E/AndroidRuntime(9599): Process: com.Designproshop.solarchargerprank, PID: 9599
01-03 21:28:14.992: E/AndroidRuntime(9599): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.BATTERY_CHANGED flg=0x60000010 (has extras) } in com.Designproshop.solarchargerprank.MainActivity$1@41b021c0
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:782)
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.os.Handler.handleCallback(Handler.java:733)
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.os.Handler.dispatchMessage(Handler.java:95)
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.os.Looper.loop(Looper.java:146)
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.app.ActivityThread.main(ActivityThread.java:5511)
01-03 21:28:14.992: E/AndroidRuntime(9599): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 21:28:14.992: E/AndroidRuntime(9599): at java.lang.reflect.Method.invoke(Method.java:515)
01-03 21:28:14.992: E/AndroidRuntime(9599): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
01-03 21:28:14.992: E/AndroidRuntime(9599): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
01-03 21:28:14.992: E/AndroidRuntime(9599): at dalvik.system.NativeStart.main(Native Method)
01-03 21:28:14.992: E/AndroidRuntime(9599): Caused by: java.lang.NullPointerException
01-03 21:28:14.992: E/AndroidRuntime(9599): at com.Designproshop.solarchargerprank.MainActivity$1.onReceive(MainActivity.java:28)
01-03 21:28:14.992: E/AndroidRuntime(9599): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:772)
01-03 21:28:14.992: E/AndroidRuntime(9599): ... 9 more
public class MainActivity extends ActionBarActivity {
private TextView contentTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
int level = intent.getIntExtra("level", 0);
contentTxt.setText(Integer.toString(level)+ "%");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.fragment_main);
new CountDownTimer(5000,1000){
@Override
public void onTick(long millisUntilFinished){}
@Override
public void onFinish(){
//set the new Content of your activity
MainActivity.this.setContentView(R.layout.chargingactivity);
}
}.start();
contentTxt = (TextView) this.findViewById(R.id.btrylevel);
this.registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}}
我做错了什么?在此先感谢..
答案 0 :(得分:0)
可能是你应该检查对象contentTxt不是null。在初始化contentTxt之前,您可能会遇到导致呼叫接收器的同步问题。 否则检查意图不为空。