gpt4 book ai didi

java - getStringArrayExtra() 返回 null

转载 作者:行者123 更新时间:2023-12-01 21:10:25 24 4
gpt4 key购买 nike

我正在尝试在 android studio 上创建一个 android 应用程序,它扫描 WIFI 信号,并将所有包含“WDT_”的 WIFI 信号 SSID 传递给另一个 Intent 。

当我运行该应用程序时,它由于 NPE 而崩溃。我调试了应用程序,它说 MultipleWifi.java 中的 Intent.getStringArrayExtra() 为空。

我在传递字符串数组时做错了什么吗?

MainActivity.java:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration conf = new WifiConfiguration();

int WDTWifiCount = 0;
List<ScanResult> results = wifiManager.getScanResults();
for (ScanResult scanResult : results) {
if (scanResult.SSID.contains("WDT_")) {
SSIDString[0] = (scanResult.SSID);
WDTWifiCount++;
}
}

WDTWifiCount = 2;
SSIDString[0] = "WDT_12345";
SSIDString[1] = "WDT_14445";

if (WDTWifiCount < 1) {
startActivity(new Intent(this, NoWifi.class));
} else if (WDTWifiCount > 1) {
Intent intent = new Intent(this, MultipleWifi.class);
intent.putExtra("SSIDList", SSIDString);
startActivityForResult(intent, 1);
}

conf.SSID = "\"" + networkSSID + "\"";
conf.preSharedKey = "\"" + networkPass + "\"";

WDTWifiCount = 0;
wifiManager.addNetwork(conf);

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"") && WDTWifiCount != 0) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();

break;
}
}

myWebView = new WebView(this);
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.loadUrl("http://192.168.1.1/index.html");
}

MultipleWifi.java:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multiplewifi);

Intent intent = getIntent();
final String[] StringSSID = intent.getStringArrayExtra("SSIDstring");
List<String> SSIDList = new ArrayList<String>(Arrays.asList(StringSSID));

final Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, SSIDList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String SSID = spinner.getSelectedItem().toString();
Intent intent = new Intent();
intent.putExtra("SSID", SSID);
setResult(RESULT_OK, intent);
finish();
}
});
}

调试:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.wdt, PID: 9031
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wdt/com.example.wdt.MultipleWifi}: java.lang.NullPointerException: storage == null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException: storage == null
at java.util.Arrays$ArrayList.<init>(Arrays.java:38)
at java.util.Arrays.asList(Arrays.java:155)
at com.example.wdt.MultipleWifi.onCreate(MultipleWifi.java:23)
at android.app.Activity.performCreate(Activity.java:5275)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) 
at android.app.ActivityThread.access$800(ActivityThread.java:139) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5105) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
at dalvik.system.NativeStart.main(Native Method) 

编辑:将“intent.putExtra”中的 key 编辑为 SSIDString 后,它仍然返回 null。

调试:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.wdt, PID: 31443
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.wdt/com.example.wdt.MultipleWifi}: java.lang.NullPointerException: storage == null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException: storage == null
at java.util.Arrays$ArrayList.<init>(Arrays.java:38)
at java.util.Arrays.asList(Arrays.java:155)
at com.example.wdt.MultipleWifi.onCreate(MultipleWifi.java:23)
at android.app.Activity.performCreate(Activity.java:5275)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) 
at android.app.ActivityThread.access$800(ActivityThread.java:139) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5105) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
at dalvik.system.NativeStart.main(Native Method) 

最佳答案

您使用了错误的 key

Intent intent = new Intent(this, MultipleWifi.class);
intent.putExtra("SSIDList", SSIDString);
there is key that you are passing
startActivityForResult(intent, 1);
//change key you are using wrong key here
final String[] StringSSID = intent.getStringArrayExtra("SSIDList");

关于java - getStringArrayExtra() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41262818/

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