प्रारंभ नहीं किया गया हो सकता है मुझे यह त्रुटि संदेश यह कह रहा है कि Variable "snackbar" might not have been initialized
।परिवर्तनीय 'स्नैकबार' को
निम्नलिखित मेरी MainActivity.java कोड का हिस्सा है:
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info != null && info.isConnected()) {
final Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "WiFi change detected; updating information...", Snackbar.LENGTH_LONG)
.setAction("DISMISS", new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
}
});
snackbar.setActionTextColor(Color.BLUE);
snackbar.show();
getWifi();
}
}
}
मैं स्वीकार किए जाते हैं स्टैक ओवरफ़्लो जवाब here पढ़ा था और यह पता चलता है कि मैं public class NetworkChangeReceiver extends BroadcastReceiver
के तुरंत बाद snackbar
आरंभ कर देगा। तो, मैं करने के लिए कोड बदल दिया है:
/* no changes here */
@Override
public void onReceive(Context context, Intent intent) {
Snackbar snackbar = null;
/* no changes here */
if (...) {
snackbar = Snackbar.make(...);
}
/* no changes here */
}
लेकिन यह मुझे एक त्रुटि Variable "snackbar" is accessed from within inner class, needs to be declared final
और एक चेतावनी Method invocation "snackbar.dismiss()" may produce "java.lang.NullPointerException"
देता है।
इसे हल करने के तरीके पर कोई सुझाव? धन्यवाद!
बस उत्सुक बना सकते हैं, इस Android स्टूडियो में एक बग है या मैं करने के लिए होती जिस तरह से आपने सुझाव दिया है उसे कोड करें? –
यह एक बग नहीं है। यह अज्ञात वर्गों को लागू करने के तरीके के कारण होता है, जो एक बार आप थोड़ा सा पोक करने के बाद वास्तव में स्पष्ट होते हैं। मैं वास्तव में एक विस्तृत स्पष्टीकरण लिख रहा था ... जारी रहेगा और यहां एक लिंक पोस्ट करेगा। –
धन्यवाद @ एंडी टर्नर, आपके लेख को पढ़ने के लिए तत्पर हैं :) –