-1

I'm a newbie in programming and facing a problem I cannot solve for myself. What I want to do, is filling/adding something to a ListView in the MainActivity with a String I put into an EditText in a SECOND Activity. Every time I click the Button on Activity 2, my App stops working. I don't know what I'm doing wrong, so help is much appreciated. I'll post my code:

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();
        }
    }
}

}

Thought to throw me into Activity_2, to input a name:

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 EXCEPTION: main Process: com.example.robert.againagainagaian, PID: 3857 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.example.robert.againagainagaian/com.example.robert.againagainagaian.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThread.java:4053) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference at com.example.robert.againagainagaian.MainActivity.onActivityResult(MainActivity.java:55) at android.app.Activity.dispatchActivityResult(Activity.java:6915) at android.app.ActivityThread.deliverResults(ActivityThread.java:4049) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Ichigo Kurosaki
  • 3,765
  • 8
  • 41
  • 56

1 Answers1

0

Check for null while accessing the data from intent 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();
                }
            }
        }

set Result on SecondActivity Like this

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();
            }
Dipali Shah
  • 3,742
  • 32
  • 47