gpt4 book ai didi

java - 尝试在空对象引用上调用虚拟方法 'java.lang.Object android.content.Context.getSystemService(java.lang.String)'

转载 作者:行者123 更新时间:2023-11-29 06:32:19 25 4
gpt4 key购买 nike

我正在尝试检查我的应用程序是否是第一次启动。如果是,则要求用户输入。然后,检查 Wi-Fi 是否已连接。如果已连接 Wi-Fi,我会使用用户提供的输入来加载 WebView。

但是,应用程序在启动时崩溃并出现错误

Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference

代码

public class MainActivity extends Activity {


ProgressBar progressbar;
WebView webView;
LayoutInflater li = LayoutInflater.from(getBaseContext());
View promptsView = li.inflate(R.layout.propmt, null);
String URL;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);

Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);

if (isFirstRun) {

otherWork(promptsView);

}


getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
.putBoolean("isFirstRun", false).commit();





ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {


getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
if (Build.VERSION.SDK_INT >= 19) {
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
else {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
webView.loadUrl(URL);
webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);



webView.setWebViewClient(new MyWebViewClient());

progressbar=(ProgressBar)findViewById(R.id.progressBar);

webView.setWebChromeClient(new WebChromeClient() {

// this will be called on page loading progress

@Override

public void onProgressChanged(WebView view, int newProgress) {

super.onProgressChanged(view, newProgress);


progressbar.setProgress(newProgress);
//loadingTitle.setProgress(newProgress);
// hide the progress bar if the loading is complete

if (newProgress == 100) {
progressbar.setVisibility(View.GONE);

} else{
progressbar.setVisibility(View.VISIBLE);

}

}

});

} else {

AlertDialog.Builder AD = new AlertDialog.Builder(this);
AD.setIcon(R.drawable.ic_launcher);
AD.setTitle("Not Connected To Wi-Fi/WLAN");
AD.setMessage("You need an Active Wi-Fi/WLAN on Alliance Broadband Network");
AD.setPositiveButton(android.R.string.ok, new OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
finish();

}
});
AD.show();

}


}

public void otherWork(View promptsView) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
this);

// set prompts.xml to alertdialog builder
alertDialogBuilder.setView(promptsView);

final EditText userInput = (EditText) promptsView
.findViewById(R.id.editTextDialogUserInput);

// set dialog message
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// get user input and set it to result
// edit text
//result.setText(userInput.getText());
SharedPreferences pos;
String fileName = "file";

pos = getSharedPreferences(fileName, 0);
SharedPreferences.Editor editor = pos.edit();
editor.putString("pwd", userInput.getText().toString());
editor.commit();

pos = getSharedPreferences(fileName, 0);
String data = pos.getString("pwd", "");


URL = data.toString();

}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
dialog.cancel();
}
});

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();

// show it
alertDialog.show();
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK){
finish();
}
return super.onKeyDown(keyCode, event);
}

private class MyWebViewClient extends WebViewClient {


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);
return true;
}
}<br>

日志猫

05-24 01:11:19.279: E/AndroidRuntime(3719): FATAL EXCEPTION: main
05-24 01:11:19.279: E/AndroidRuntime(3719): Process: com.mavenmaverick.ipconnect, PID: 3719
05-24 01:11:19.279: E/AndroidRuntime(3719): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mavenmaverick.ipconnect/com.mavenmaverick.ipconnect.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread.access$800(ActivityThread.java:144)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.os.Handler.dispatchMessage(Handler.java:102)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.os.Looper.loop(Looper.java:135)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread.main(ActivityThread.java:5221)
05-24 01:11:19.279: E/AndroidRuntime(3719): at java.lang.reflect.Method.invoke(Native Method)
05-24 01:11:19.279: E/AndroidRuntime(3719): at java.lang.reflect.Method.invoke(Method.java:372)
05-24 01:11:19.279: E/AndroidRuntime(3719): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
05-24 01:11:19.279: E/AndroidRuntime(3719): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
05-24 01:11:19.279: E/AndroidRuntime(3719): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.view.LayoutInflater.from(LayoutInflater.java:219)
05-24 01:11:19.279: E/AndroidRuntime(3719): at com.mavenmaverick.ipconnect.MainActivity.<init>(MainActivity.java:47)
05-24 01:11:19.279: E/AndroidRuntime(3719): at java.lang.reflect.Constructor.newInstance(Native Method)
05-24 01:11:19.279: E/AndroidRuntime(3719): at java.lang.Class.newInstance(Class.java:1572)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
05-24 01:11:19.279: E/AndroidRuntime(3719): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
05-24 01:11:19.279: E/AndroidRuntime(3719): ... 10 more

最佳答案

LayoutInflater li = LayoutInflater.from(getBaseContext());

首先,你不需要getBaseContext(),也不需要LayoutInflater.from()。使用 getLayoutInflater()

其次,在 super.onCreate() 之后才能调用 Activity 父类(super class)的方法,某些情况除外。请将 promptsView 的初始化推迟到调用 super.onCreate() 之后。

关于java - 尝试在空对象引用上调用虚拟方法 'java.lang.Object android.content.Context.getSystemService(java.lang.String)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30416991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com