के कारण तत्काल नहीं किया जा सकता है, मैं एंड्रॉइड दुनिया में एक नोब हूं, और अभ्यास के लिए एक पालतू परियोजना कर रहा हूं। यह केवल दो गतिविधियों के साथ एक बहुत ही सरल अनुस्मारक-जैसे ऐप है। एक एक अनुकूलित सूची दृश्य मौजूदा अलार्म प्रदर्शित करता है। इसमें दूसरे बटन शुरू करने के लिए कुछ बटन हैं, जो अलार्म जोड़ने/संपादित करने के लिए हैं। इसमें एक बटन है जो पिछली सूची दृश्य गतिविधि का कारण बनता है।android.app. अनुप्रयोग को NullPointerException
एक अजीब स्थिति है जिसे मैंने हाल ही में भाग लिया था। मेरा ऐप ठीक काम करता है। लेकिन समस्या यह है कि, जब भी मैं ऐड/एडिट गतिविधि को ट्रिगर करता हूं तो सूचीव्यू पर वापस जाता हूं, और फिर से चलाया जाता है (या मुझे फिर से इंस्टॉल करना चाहिए?) ऐप। एक त्रुटि संदेश पॉपअप होगा। लेकिन यह केवल संक्षेप में दिखाएगा और ऐप शुरू होगा।
मैं लॉग में पकड़ा त्रुटि संदेश का कहना है:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException
at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3909)
at android.app.ActivityThread.access$1300(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362)
at android.app.LoadedApk.getClassLoader(LoadedApk.java:305)
at android.app.LoadedApk.makeApplication(LoadedApk.java:474)
... 11 more
यह स्पष्ट कहना नहीं है, जहां मेरे कोड में गलत है। तो मुझे इसके बारे में कोई जानकारी नहीं है कि इसे कैसे ठीक किया जाए। क्या किसी को भी इसी तरह की समस्या का सामना करना पड़ा? सभी सुझावों का स्वागत है!
यहाँ जोड़ें/संपादित गतिविधियों का कोड है:
public class EditEntry extends Activity
{
private AutoCompleteTextView foodNameTextView;
private DatePicker datePicker;
// store values in AutoCompleteTextView & DatePicker
private String foodName;
private Calendar foodDate;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
// dummy selections for AutoCompleteTextView
String[] foodList = new String[]{"meat", "fruit", "vega"};
// instantiate AutoCompleteTextView & DatePicker
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.food_list_dropdown, foodList);
foodNameTextView = (AutoCompleteTextView)findViewById(R.id.foodName);
foodNameTextView.setAdapter(arrayAdapter);
datePicker = (DatePicker)findViewById(R.id.date_picker);
// get intent from ReminderList.
Intent intent = getIntent();
// get extras from intent. Return null if intent is sent from "add" action.
foodName = intent.getStringExtra("foodName");
foodDate = (Calendar) intent.getSerializableExtra("foodDate");
// set default values for widgets if it is an "edit" action.
if (null != foodName)
{
foodNameTextView.setText(foodName);
datePicker.init(foodDate.get(Calendar.YEAR), foodDate.get(Calendar.MONTH), foodDate.get(Calendar.DAY_OF_MONTH),
new OnDateChangedListener()
{ // will implement date input check later.
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {}
});
}
// Submit will add/modify the data in xml file. Back will start ReminderList activity
Button submit = (Button)findViewById(R.id.entry_submit);
Button back = (Button)findViewById(R.id.entry_back);
submit.setOnClickListener(new SubmitButtonListener());
back.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setClass(EditEntry.this, FoodReminderList.class);
startActivity(intent);
}
});
}
// add or modify data in xml file
@SuppressWarnings("unused")
class SubmitButtonListener implements OnClickListener
{
Calendar foodDate = Calendar.getInstance();
@Override
public void onClick(View v)
{
XmlUtil xmlUtil = new XmlUtil();
// determine if it is an "edit" action.
if (null != foodName)
{
FoodInfo foodInfo = new FoodInfo(foodName, foodDate);
// delete the old data entry
xmlUtil.deleteEntry(foodInfo);
// cancel old alarm
FoodReceiver alarm = new FoodReceiver(EditEntry.this, foodDate, false);
}
// get new input values
foodName = foodNameTextView.getText().toString();
foodDate.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 0, 0, 0);
// update xml file
FoodInfo foodInfo = new FoodInfo(foodName, foodDate);
xmlUtil.updateEntry(foodInfo);
// set new alarm
FoodReceiver alarm = new FoodReceiver(EditEntry.this, foodDate, true);
// popup toast confirming the submit
Toast.makeText(EditEntry.this, "Reminder Added", Toast.LENGTH_SHORT).show();
// clear widgets
foodNameTextView.setText("");
Calendar currentDate = Calendar.getInstance();
datePicker.updateDate(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH));
}
}
}
मैनिफ़ेस्ट इस प्रकार है:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ca.maxiao.Food"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".FoodReminderList" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".EditEntry" >
</activity>
<activity
android:label='@string/app_name'
android:name=".FoodReminder"></activity>
<receiver android:name="ca.maxiao.Food.FoodReceiver">
<intent-filter>
<action android:name="Alarm_Setting" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
</manifest>
इसी तरह की त्रुटि के बारे में एक [पोस्ट] (http://www.mail-archive.com/[email protected]/msg194903.html) है। मैं समझता हूं कि यह थ्रेड रेस समस्या हो सकती है, लेकिन अभी भी नहीं पता कि मेरे कोड कैसे संशोधित करें। – Selkie
क्या आप यहां अपनी मेनिफेस्ट फ़ाइल जोड़ सकते हैं? – Yury
सुनिश्चित करें। प्रकट जोड़ा गया। – Selkie