2017-02-12 5 views
2

Ich habe Probleme, diesen Fehler zu lösen, da ich neu bei Android bin. Ich habe diesen Nullzeiger Ausnahmefehler und meine App wird nicht geöffnet.java.lang.NullPointerException: Fehler - App öffnet nicht

Fehler:

02/11 22:34:19: Launching app Cold swapped changes. $ adb shell am start -n "com.ahsanburney.quicknotes/com.ahsanburney.quicknotes.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Connected to process 3071 on device Nexus_4_API_21 [emulator-5554] I/InstantRun: Instant Run Runtime started. Android package is com.ahsanburney.quicknotes, real application class is null. W/art: Failed to find OatDexFile for DexFile /data/data/com.ahsanburney.quicknotes/files/instant-run/dex/slice-slice_1-classes.dex (canonical path /data/data/com.ahsanburney.quicknotes/files/instant-run/dex/slice-slice_1-classes.dex) with checksum 0x428a55bf in OatFile /data/data/com.ahsanburney.quicknotes/cache/slice-slice_1-classes.dex W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable D/MainActivity: loadFile: Loading JSON File D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ahsanburney.quicknotes, PID: 3071 java.lang.RuntimeException: Unable to resume activity {com.ahsanburney.quicknotes/com.ahsanburney.quicknotes.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2951) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2982) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at com.ahsanburney.quicknotes.MainActivity.onResume(MainActivity.java:61) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1241) at android.app.Activity.performResume(Activity.java:6023) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2940) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2982)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)  at android.app.ActivityThread.access$800(ActivityThread.java:144)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:135)  at android.app.ActivityThread.main(ActivityThread.java:5221)  at java.lang.reflect.Method.invoke(Native Method)  at java.lang.reflect.Method.invoke(Method.java:372)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)  Application terminated.

public class MainActivity extends AppCompatActivity { 

    private static final String TAG = "MainActivity"; 
    private TextView dateTime; 
    private EditText notes; 
    private Data_Saved data_saved; 
    private String nChange; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 


     SimpleDateFormat df = new SimpleDateFormat("EEE MMM d, h:mm a"); 
     String date = df.format(Calendar.getInstance().getTime()); 
     dateTime = (TextView) findViewById(R.id.lastupdated); 
     dateTime.setText(date); 
     notes = (EditText) findViewById(R.id.main_notes); 
     notes.setMovementMethod(new ScrollingMovementMethod()); 

    } 

    @Override 
    protected void onResume() { 
     super.onStart(); 
     data_saved = loadFile(); // Load the JSON containing the product data - if it exists 
     if (data_saved != null) { // null means no file was loaded 

      if(data_saved.getdateTime().equals("")) 
      { 
       DateFormat df = new SimpleDateFormat("EEE MMM d, h:mm a"); 
       String date = df.format(Calendar.getInstance().getTime()); 
       dateTime.setText(date); 

      } 
      else{ 
       dateTime.setText(data_saved.getdateTime());} 
      if(data_saved.getnotes().equals("")) 
      { 
       DateFormat df = new SimpleDateFormat("EEE MMM d, h:mm a"); 
       String date = df.format(Calendar.getInstance().getTime()); 
       dateTime.setText(date); 

      } 
      notes.setText(data_saved.getnotes()); 
      nChange = data_saved.getnotes(); 
     } 
    } 

    private Data_Saved loadFile() { 

     Log.d(TAG, "loadFile: Loading JSON File"); 
     data_saved = new Data_Saved(); 
     try { 
      InputStream is = getApplicationContext().openFileInput("data_saved.json"); 
      JsonReader reader = new JsonReader(new InputStreamReader(is,"UTF-8")); 

      reader.beginObject(); 
      while (reader.hasNext()) { 
       String name = reader.nextName(); 
       if (name.equals("dateTime")) { 
        data_saved.setdateTime(reader.nextString()); 
       } else if (name.equals("notes")) { 
        data_saved.setnotes(reader.nextString()); 
       } else { 
        reader.skipValue(); 
       } 
      } 
      reader.endObject(); 

     } catch (FileNotFoundException e) { 
      Toast.makeText(this, "No file is Present", Toast.LENGTH_SHORT).show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return data_saved; 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 

     data_saved.setdateTime(dateTime.getText().toString()); 
     data_saved.setnotes(notes.getText().toString()); 

     saveNotes(); 
    } 

    private void saveNotes() { 


     if (nChange.equals(data_saved.getnotes())) { 
      return; 

     } else { 



      Log.d(TAG, "saveNotes: Saving JSON File"); 
      try { 

       FileOutputStream fos = getApplicationContext().openFileOutput("data_saved.json", Context.MODE_PRIVATE); 

       JsonWriter writer = new JsonWriter(new OutputStreamWriter(fos, "UTF-8")); 
       writer.setIndent(" "); 
       writer.beginObject(); 
       DateFormat df = new SimpleDateFormat("EEE MMM d, h:mm a"); 
       String date = df.format(Calendar.getInstance().getTime()); 
       writer.name("dateTime").value(date); 
       writer.name("notes").value(data_saved.getnotes()); 
       writer.endObject(); 
       writer.close(); 






      /// You do not need to do the below - it's just 
       /// a way to see the JSON that is created. 
       /// 
       StringWriter sw = new StringWriter(); 
       writer = new JsonWriter(sw); 
       writer.setIndent(" "); 
       writer.beginObject(); 
       //DateFormat df = new SimpleDateFormat("EEE MMM d, h:mm a"); 
       //String date = df.format(Calendar.getInstance().getTime()); 
       //dateTime.setText(date); 
       //writer.name(date); 
       //xmlSerializer.text(date); 
       writer.name("dateTime").value(data_saved.getdateTime()); 

       writer.name("notes").value(data_saved.getnotes()); 
       writer.endObject(); 
       writer.close(); 
       Log.d(TAG, "saveNotes: JSON:\n" + sw.toString()); 
       /// 
       /// 

       Toast.makeText(this, "Notes Saved!", Toast.LENGTH_SHORT).show(); 
      } catch (Exception e) { 
       e.getStackTrace(); 
      } 
     } 
    } 

} 
+0

'bei com.ahsanburney.quicknotes.MainActivity.onResume (MainActivity.java:61)' Dies besagt, dass der Fehler in Zeile 61 in MainActivity.java auftritt. Fang dort an. –

+0

p.s. Sie sollten Android Studio installieren, da Eclipse nicht mehr von Google unterstützt wird. –

Antwort

1

prüft Haupttätigkeit Linie 61. Die Null-Zeiger-Ausnahme ausgelöst wird, weil String.equals() Funktion hergestellt ist, auf einem Null-Objekt zu betreiben. Stellen Sie sicher, dass die von data_saved.getdateTime() und data_saved.getnotes() zurückgegebenen Objekte nicht null sind, bevor Sie die String.equals()-Funktion anwenden.

Verwandte Themen