2017-01-09 6 views
-1

Jeder hat eine Idee, warum die Anwendung abstürzt, nachdem er auf "Dodaj" geklickt hat. Wenn ich Standardwerte für TaskArray zB. taskArray (neue Aufgabe ("Beispiel", "beispielsweise") geht alles in Ordnung. In der Situation unter meinem Alarm Dialog die App abstürzt.Custom AlerDialog

public boolean onOptionsItemSelected(MenuItem item) { 
// Handle action bar item clicks here. The action bar will 
// automatically handle clicks on the Home/Up button, so long 
// as you specify a parent activity in AndroidManifest.xml. 
final int id = item.getItemId(); 

final EditText input1 = (EditText) findViewById(R.id.tematZadania); 
final EditText input2 = (EditText) findViewById(R.id.prioZadania); 


if (id == R.id.menuItem) { 
AlertDialog noweZadanie = new AlertDialog.Builder(MainActivity.this) 
.setTitle("Dodaj nowe zadanie") 
.setView(R.layout.pojedyncze_zadanie) 
.setPositiveButton("Dodaj", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
Toast.makeText(getApplicationContext(), "ej", Toast.LENGTH_SHORT).show(); 
String item1 = String.valueOf(input1.getText()); 
String item2 = String.valueOf(input2.getText()); 
taskArray.add(new Task(item1, item2)); 
           //input1.setText(""); 
           //input2.setText(""); 
           taskArrayAdapter.notifyDataSetChanged(); 
          } 
         }) 
         .setNegativeButton("Anuluj", null) 
         .create(); 
       noweZadanie.show(); 
     } 
      if (id == R.id.menuItem2) { 
       finish(); 
       return true; 
      } 

      return super.onOptionsItemSelected(item); 
     } 

XML.file

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:text="Name" 
     android:ems="10" 
     android:id="@+id/tematZadania" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:text="Name" 
     android:ems="10" 
     android:id="@+id/prioZadania" /> 
</LinearLayout> 

Log

I/Timeline: Timeline: Activity_idle id: [email protected] time:204086971 
W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView 
I/ListPopupWindow: Could not find method setEpicenterBounds(Rect) on PopupWindow. Oh well. 
D/AndroidRuntime: Shutting down VM 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.piotr.todolist, PID: 2616 
        java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
         at com.example.piotr.todolist.MainActivity$2.onClick(MainActivity.java:176) 
         at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:135) 
         at android.app.ActivityThread.main(ActivityThread.java:5319) 
         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:1016) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
+0

Sie EditText nicht richtig initialisiert wird! – Mrinmoy

+0

Es ist eine Null-Zeiger-Ausnahme, die von der EditText-Deklaration kommt. Debuggen Sie Ihren Code und Sie haben Ihren Fehler leicht. – Andrain

Antwort

0

Sie sollten wie initialisieren EditText

View dialogView = inflater.inflate(R.layout.pojedyncze_zadanie,null); 
    builder.setView(dialogView); 

    EditText input1 = (EditText) dialogView .findViewById(R.id.tematZadania); 
+0

Es war so einfach. Ich bin jetzt peinlich;) Danke für deine Zeit! – Graphite

1

Ihre Anwendung abstürzt bei input1.getText()

Also nach Ihrem Fehler input1 ist Null, überprüfen Sie, ob "ID" Sie übergeben ist richtig findViewById() ist richtig, simillarly für input2 auch.

und wie es Brauch Alertdialog ist, sollten Sie etwas tun: -

EditText input1 = (EditText) dialog.findViewById(.....);