Android 无法仅在nexus 7 4.4.2上恢复活动
我的应用程序在所有设备(avd 2.3.3、avd 4.4.2、avd 4.1.2 ecc..)和真实设备(如安卓4.1安卓2.3.3-2.3.7安卓4.0.3-4.0.4安卓4.2安卓4.4安卓2.2安卓2.1安卓3.1)上都能完美运行,但它只在带有4.4.2的Google Nexus 7上给出了以下错误Android 无法仅在nexus 7 4.4.2上恢复活动,android,nullpointerexception,onresume,Android,Nullpointerexception,Onresume,我的应用程序在所有设备(avd 2.3.3、avd 4.4.2、avd 4.1.2 ecc..)和真实设备(如安卓4.1安卓2.3.3-2.3.7安卓4.0.3-4.0.4安卓4.2安卓4.4安卓2.2安卓2.1安卓3.1)上都能完美运行,但它只在带有4.4.2的Google Nexus 7上给出了以下错误 04-15 15:50:16.676: E/AndroidRuntime(24520): FATAL EXCEPTION: main 04-15 15:50:16.676: E/Androi
04-15 15:50:16.676: E/AndroidRuntime(24520): FATAL EXCEPTION: main
04-15 15:50:16.676: E/AndroidRuntime(24520): Process: dado.auto3gdataswitch, PID: 24520
04-15 15:50:16.676: E/AndroidRuntime(24520): java.lang.RuntimeException: Unable to resume activity {dado.auto3gdataswitch/dado.auto3gdataswitch.MainActivity}: java.lang.NullPointerException
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2788)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2817)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.os.Handler.dispatchMessage(Handler.java:102)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.os.Looper.loop(Looper.java:136)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-15 15:50:16.676: E/AndroidRuntime(24520): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 15:50:16.676: E/AndroidRuntime(24520): at java.lang.reflect.Method.invoke(Method.java:515)
04-15 15:50:16.676: E/AndroidRuntime(24520): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-15 15:50:16.676: E/AndroidRuntime(24520): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-15 15:50:16.676: E/AndroidRuntime(24520): at dalvik.system.NativeStart.main(Native Method)
04-15 15:50:16.676: E/AndroidRuntime(24520): Caused by: java.lang.NullPointerException
04-15 15:50:16.676: E/AndroidRuntime(24520): at dado.auto3gdataswitch.MainActivity.onResume(MainActivity.java:112)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.Activity.performResume(Activity.java:5310)
04-15 15:50:16.676: E/AndroidRuntime(24520): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2778)
04-15 15:50:16.676: E/AndroidRuntime(24520): ... 12 more
我的活动:
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final PackageManager pm = getPackageManager();
final ComponentName compName = new ComponentName(getApplicationContext(),NetworkReceiver.class);
final Button button = (Button) findViewById(R.id.button1);
final ConnectivityManager conman = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
final WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
int isEnabled = pm.getComponentEnabledSetting(compName);
if (isEnabled == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
Toast.makeText(MainActivity.this, R.string.broadcastStop, Toast.LENGTH_SHORT).show();
button.setText(R.string.btEnable);
}
else {
wifiManager.setWifiEnabled(true);
Intent i = new Intent(getBaseContext(), MainService.class);
startService(i);
Toast.makeText(MainActivity.this, R.string.broadcastRun, Toast.LENGTH_SHORT).show();
button.setText(R.string.btDisable);
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int isEnabled = pm.getComponentEnabledSetting(compName);
if (isEnabled == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
wifiManager.setWifiEnabled(true);
Intent i = new Intent(getBaseContext(), MainService.class);
startService(i);
pm.setComponentEnabledSetting(compName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);
Toast.makeText(MainActivity.this, R.string.broadcastRun, Toast.LENGTH_SHORT).show();
button.setText(R.string.btDisable);
}
else {
pm.setComponentEnabledSetting(compName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
Toast.makeText(MainActivity.this, R.string.broadcastStop, Toast.LENGTH_SHORT).show();
button.setText(R.string.btEnable);
}
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
final TextView vibration = (TextView) findViewById(R.id.getVibro);
final TextView sound = (TextView) findViewById(R.id.getSound);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean(PreferencesActivity.SOUND, false)) {
sound.setText(getString(R.string.soundOn));
}
else {
sound.setText("BLABLA");<<ERROR HERE
}
if (prefs.getBoolean(PreferencesActivity.VIBRO, false)) {
vibration.setText(getString(R.string.vibroOn));
}
else {
vibration.setText(getString(R.string.vibroOff));
}
}
导入android.app.Activity;
导入android.content.ComponentName;
导入android.content.Context;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.content.pm.PackageManager;
导入android.net.ConnectivityManager;
导入android.net.wifi.WifiManager;
导入android.os.Bundle;
导入android.preference.PreferenceManager;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终PackageManager pm=getPackageManager();
final ComponentName compName=新组件名(getApplicationContext(),NetworkReceiver.class);
最终按钮按钮=(按钮)findViewById(R.id.button1);
最终ConnectivityManager conman=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
最终WifiManager=(WifiManager)this.getSystemService(Context.WIFI_服务);
int isEnabled=pm.getComponentEnabledSetting(compName);
如果(isEnabled==PackageManager.COMPONENT\u ENABLED\u STATE\u DISABLED){
Toast.makeText(MainActivity.this,R.string.broadcastStop,Toast.LENGTH_SHORT).show();
button.setText(R.string.btEnable);
}
否则{
wifiManager.setWifiEnabled(true);
Intent i=新的Intent(getBaseContext(),MainService.class);
startService(一);
Toast.makeText(MainActivity.this,R.string.broadcastRun,Toast.LENGTH_SHORT).show();
button.setText(R.string.btDisable);
}
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int isEnabled=pm.getComponentEnabledSetting(compName);
如果(isEnabled==PackageManager.COMPONENT\u ENABLED\u STATE\u DISABLED){
wifiManager.setWifiEnabled(true);
Intent i=新的Intent(getBaseContext(),MainService.class);
startService(一);
pm.setComponentEnabledSetting(compName、PackageManager.COMPONENT\u ENABLED\u STATE\u ENABLED、PackageManager.DONT\u KILL\u APP);
Toast.makeText(MainActivity.this,R.string.broadcastRun,Toast.LENGTH_SHORT).show();
button.setText(R.string.btDisable);
}
否则{
pm.setComponentEnabledSetting(compName、PackageManager.COMPONENT\u ENABLED\u STATE\u DISABLED、PackageManager.DONT\u KILL\u APP);
Toast.makeText(MainActivity.this,R.string.broadcastStop,Toast.LENGTH_SHORT).show();
button.setText(R.string.btEnable);
}
}
});
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
最终文本视图振动=(文本视图)findViewById(R.id.getVibro);
最终文本视图声音=(文本视图)findViewById(R.id.getSound);
SharedPreferences=PreferenceManager.getDefaultSharedPreferences(此);
if(prefs.getBoolean(PreferencesActivity.SOUND,false)){
sound.setText(getString(R.string.soundOn));
}
否则{
sound.setText(“BLABLA”);此行:
sound.setText(R.string.soundOff);
应该是:
sound.setText(getString(R.string.soundOff));
编辑:下面几行相同..您可以看到nullpointer在您的logcat中发生的位置,转到该行并查看可能出现的错误
编辑2:这一行告诉您问题所在:
Caused by: java.lang.NullPointerException
at dado.auto3gdataswitch.MainActivity.onResume(MainActivity.java:113)
只需尝试不使用修饰语final即可
TextView声音=(TextView)findViewById(R.id.getSound)
还要检查id为getSound
的文本视图是否位于main.xml
中
如果错误仍然存在,请执行以下更改---
从onResume()
中删除以下行,并将它们放置在setContentView(R.layout.main);
在MainActivity.java的第113行有一个NullPointerException。只需在没有修饰符final的情况下尝试,即TextView声音=(TextView)findViewById(R.id.getSound);
。还要检查id为getSound
的textview是否位于main.xml
中。将其置于try catch上,您将在所有行上更正错误原因,但在相同行中我有相同的错误!在setText行上?粘贴更新的代码外观以及Nullpointer发生的位置编辑!当我双击红线nullpoint wh这里有一个错误!如果你只是放入一个随机字符串(如“BLABLA”),它也会发生同样的情况。测试findViewById是否正确。在实例化它之后,记录声音是对象还是null。顺便说一句,这是我进入调试模式的地方,在前后添加断点,这样你就可以更容易地检查错误
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView vibration = (TextView) findViewById(R.id.getVibro);
final TextView sound = (TextView) findViewById(R.id.getSound);
//Rest of the code
}