2017-12-15 3 views
-1

Ich bin ein Neuling in der Programmierung und vor einem Problem, das ich für mich selbst nicht lösen kann. Was ich tun möchte, ist das Füllen/Hinzufügen von etwas zu einem ListView in der MainActivity mit einem String, den ich in einen EditText in einer zweiten Aktivität eingefügt habe. Jedes Mal, wenn ich auf den Button auf Aktivität 2 klicke, funktioniert meine App nicht mehr. Ich weiß nicht, was ich falsch mache, deshalb wird Hilfe sehr geschätzt. Ich werde meinen Code schreiben:ListView mit Button und setResult

MainActivity:

public class MainActivity extends AppCompatActivity { 

EditText et; 
ListView lv; 
ArrayList<String> arrayList; 
ArrayAdapter<String> adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    et = (EditText) findViewById(R.id.et); 
    lv = (ListView) findViewById(R.id.lv); 

    arrayList = new ArrayList<String>(); 
    adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList); 
    lv.setAdapter(adapter); 



    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent intent1 = new Intent(MainActivity.this , Activity_2.class); 
      startActivityForResult(intent1, 1);//Throws me into Act2 
     } 
    }); 
} 


public void onActivityResult(int requestCode, int resultCode, Intent intentback){ 
    super.onActivityResult(requestCode, resultCode, intentback); 
    if (requestCode == 1){ 
     if(resultCode == RESULT_OK){ 
      String resultback = intentback.getStringExtra("nameEvent"); 
      arrayList.add(intentback.getStringExtra("nameEvent")); 
      adapter.notifyDataSetChanged(); 
     } 
    } 
} 

} 

Dachte mir in Activity_2 zu werfen, einen Namen eingeben:

public class Activity_2 extends AppCompatActivity { 

EditText etact; 
Button addbtn; 
String eventname; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_2_layout); 

    addbtn = (Button) findViewById(R.id.addbtn); 
    etact = (EditText) findViewById(R.id.etact); 
    if (etact.getText().toString()!= ""){ 
     eventname = etact.getText().toString(); 
    } 

    addbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (eventname == ""){ 
       Toast.makeText(Activity_2.this, 
         "Make Input first", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       Intent intentback = new Intent(Activity_2.this, MainActivity.class); 
       intentback.putExtra("nameEvent", eventname); 
       setResult(RESULT_OK); 
       finish(); 
      } 
     } 
    }); 

} 


} 

EDIT: Logcat

FATAL AUSNAHME: Hauptprozess: com.example.robert.againagainagaian, PID: 3857 java.lang.RuntimeException: Fehler beim Liefern des Ergebnisses ResultInfo {who = null, request = 1, result = -1, data = null} zu Aktivität {com.example.robert.againagainagaian/com.example.robert.againagainagaian.MainActivity}: java.lang .NullPointerException: Versuch virtuelle Methode bei android.app.ActivityThread.deliverResults 'java.lang.String android.content.Intent.getStringExtra (java.lang.String)' auf null Objektverweis aufgerufen (ActivityThread.java : 4053) bei android.app.ActivityThread.handleSendResult (ActivityThread.java:4096) bei android.app.ActivityThread.-wrap20 (ActivityThread.java) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java: 1516) bei android.os.Handler.dis patchMessage (Handler.java:102) um android.os.Looper.loop (Looper.java:154) um android.app.ActivityThread.main (ActivityThread.java:6077) um java.lang.reflect.Method. Rufen Sie (Native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 866) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:756) verursacht durch : java.lang.NullPointerException: Versuch com.example.robert.againagainagaian virtuelle Methode 'java.lang.String android.content.Intent.getStringExtra (java.lang.String)' auf null Objektverweis aufgerufen .MainActivity.onActivityResult (MainActivity.java:55) bei android.app.Activity.dispatchActivityResult (Activity.java:6915) bei android.app.ActivityThread.deliverResults (ActivityThread.java:4049) bei android.app.ActivityThread.handleSendResult (ActivityThread.java:4096) bei android.app.ActivityThread.-wrap20 (ActivityThread .java) um android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1516) bei android.os.Handler.dispatchMessage (Handler.java:102) um android.os.Looper.loop (Looper.java : 154) unter android.app.ActivityThread.main (ActivityThread.java:6077) um java.lang.reflect.Method.invoke (Native Methode) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:866) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 756)

+0

zeigen logcat bitte. –

+0

'if (eventname ==" ")' wrong..es sollte 'if (eventname.equals (" "))' –

+0

BEARBEITEN: Ignoriere einfach den EditText in MainActivity, es ist etwas anderes, was ich als nächstes machen möchte. Danke – ForeverNewbie

Antwort

0

prüfen null, während die Daten von Vorsatz Zugriff auf onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent intentback){ 
      super.onActivityResult(requestCode, resultCode, intentback); 
      if (requestCode == 1){ 
       if(resultCode == RESULT_OK && intentback.getData()!=null){ 
        String resultback = intentback.getStringExtra("nameEvent"); 
        arrayList.add(intentback.getStringExtra("nameEvent")); 
        adapter.notifyDataSetChanged(); 
       } 
      } 
     } 

Satz Ergebnis auf SecondActivity Gefallen Sie diesen

if (!("").equals(etact.getText().toString())){ 
     eventname = etact.getText().toString(); 
    } 

    addbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (("").equals(eventname)){ 
       Toast.makeText(Activity_2.this, 
         "Make Input first", Toast.LENGTH_LONG).show(); 
      } 

      else { 
       Intent intentback = new Intent(); 
       intentback.putExtra("nameEvent", eventname); 
       setResult(RESULT_OK, intent); 
       finish(); 
      } 
+0

funktioniert immer noch nicht, nachdem die Änderungen vorgenommen wurden:/ – ForeverNewbie

+0

@ForeverNewbie, überprüfen Sie die aktualisierte Antwort. –

+0

Ok, die App stürzt jetzt nicht ab !!! aber meiner Listview wird nichts hinzugefügt .. – ForeverNewbie

Verwandte Themen