Question

I'm trying to develop an Android app and I'm having issues with a part of it. I'm trying to create an activity with a button that when it's clicked it sends you to another activity, where you can write a name, this name is passed back to the activity with the button and it sets the visibility of one button that is set to invisible to visible and the text that was passed back. The issue I'm having is that whenever I try to click the ok button from the class where you're supposed to introduce the string I get a NullPointer Exception. I copy/paste the code.

Activity with the buttons (Notebook.java):

package eu.lafarga.treballderecerca;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import eu.lafarga.treballderecerca.Notebook_NewSubject;

public class Notebook extends Activity implements View.OnClickListener {

    public Button NewSubjectButton, Button1L, Button2L, Button3L, Button4L,
            Button5L, Button1R, Button2R, Button3R, Button4R, Button5R;
    private int counter;

    // onCreate
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notebook);
        initializeNotebook();


    }

    public void initializeNotebook() {
        NewSubjectButton = (Button) findViewById(R.id.bNotebookNew);
        Button1L = (Button) findViewById(R.id.bHiddenL1);
        Button2L = (Button) findViewById(R.id.bHiddenL2);
        Button3L = (Button) findViewById(R.id.bHiddenL3);
        Button4L = (Button) findViewById(R.id.bHiddenL4);
        Button5L = (Button) findViewById(R.id.bHiddenL5);
        Button1R = (Button) findViewById(R.id.bHiddenR1);
        Button2R = (Button) findViewById(R.id.bHiddenR2);
        Button3R = (Button) findViewById(R.id.bHiddenR3);
        Button4R = (Button) findViewById(R.id.bHiddenR4);
        Button5R = (Button) findViewById(R.id.bHiddenR5);

        NewSubjectButton.setOnClickListener(this);
        Button1L.setOnClickListener(this);
        Button2L.setOnClickListener(this);
        Button3L.setOnClickListener(this);
        Button4L.setOnClickListener(this);
        Button5L.setOnClickListener(this);
        Button1R.setOnClickListener(this);
        Button2R.setOnClickListener(this);
        Button3R.setOnClickListener(this);
        Button4R.setOnClickListener(this);
        Button5R.setOnClickListener(this);
    }


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Bundle getNewSubjectBundle = getIntent().getExtras();
        int Number = getNewSubjectBundle.getInt("int");
        String Title = "0";

        if(resultCode == RESULT_OK && Number == 1){

            Title = getNewSubjectBundle.getString("title1L");
            Button1L.setText(Title);
            Button1L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 2){

            Title = getNewSubjectBundle.getString("title2L");
            Button2L.setText(Title);
            Button2L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 3){
            Title = getNewSubjectBundle.getString("title3L");
            Button3L.setText(Title);
            Button3L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 4){
            Title = getNewSubjectBundle.getString("title4L");
            Button4L.setText(Title);
            Button4L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 5){
            Title = getNewSubjectBundle.getString("title5L");
            Button5L.setText(Title);
            Button5L.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 6){
            Title = getNewSubjectBundle.getString("title1R");
            Button1R.setText(Title);
            Button1R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 7){
            Title = getNewSubjectBundle.getString("title2R");
            Button2R.setText(Title);
            Button2R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 8){
            Title = getNewSubjectBundle.getString("title3R");
            Button3R.setText(Title);
            Button3R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 9){
            Title = getNewSubjectBundle.getString("title4R");
            Button4R.setText(Title);
            Button4R.setVisibility(View.VISIBLE);
            counter++;

        }else if(resultCode == RESULT_OK && Number == 10){
            Title = getNewSubjectBundle.getString("title5R");
            Button5R.setText(Title);
            Button5R.setVisibility(View.VISIBLE);
            counter++;

        }else if(counter > 10){
            NewSubjectButton.setVisibility(View.GONE);
        }
    }

The activity where you're supposed to introduce the text(Notebook_NewSubject.java):

package eu.lafarga.treballderecerca;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Notebook_NewSubject extends Activity implements View.OnClickListener {

    private Button OKButton;
    Bundle NewSubjectBundle;
    private EditText NewTextInput;
    Intent mIntent = new Intent();

    int[] integer = {0,0,0,0,0,0,0,0,0,0};

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newnotebookbutton);
        initializeNotebookNewSubject();


    }


        public void initializeNotebookNewSubject() {

            NewTextInput = (EditText) findViewById(R.id.etNewNotebookButtonCreateSubjectButton);
            OKButton = (Button) findViewById(R.id.bOkButton);

            OKButton.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {



            switch (v.getId()){

            case R.id.bOkButton:


            if(integer[0] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title1L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 1);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[0] = 1;
                 return;


            }else if(integer[1] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title2L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 2);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[1] = 1;
                 return;

            }else if(integer[2] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title3L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 3);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[2] = 1;
                 return;

            }else if(integer[3] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title4L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 4);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[3] = 1;
                 return;

            }else if(integer[4] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title5L", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 5);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[4] = 1;
                 return;

            }else if(integer[5] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title1R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 6);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[5] = 1;
                 return;

            }else if(integer[6] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title2R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 7);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[6] = 1;
                 return;

            }else if(integer[7] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title3R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 8);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[7] = 1;
                 return;

            }else if(integer[8] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title4R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 9);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[8] = 1;
                 return;

            }else if(integer[9] == 0 && NewTextInput.getText().toString() != null){

                NewSubjectBundle.putString("title5R", NewTextInput.getText().toString());
                NewSubjectBundle.putInt("int", 10);
                 mIntent.putExtras(NewSubjectBundle);
                 setResult(RESULT_OK, mIntent);
                 integer[9] = 1;
                 return;

            }


            break;
        }
            finish();
    }

}

The error:

10-27 11:25:31.536: D/AndroidRuntime(837): Shutting down VM
10-27 11:25:31.536: W/dalvikvm(837): threadid=1: thread exiting with uncaught exception (group=0x41465700)
10-27 11:25:31.787: E/AndroidRuntime(837): FATAL EXCEPTION: main
10-27 11:25:31.787: E/AndroidRuntime(837): java.lang.NullPointerException
10-27 11:25:31.787: E/AndroidRuntime(837):  at eu.lafarga.treballderecerca.Notebook_NewSubject.onClick(Notebook_NewSubject.java:47)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.view.View.performClick(View.java:4240)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.view.View$PerformClick.run(View.java:17721)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Handler.handleCallback(Handler.java:730)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.os.Looper.loop(Looper.java:137)
10-27 11:25:31.787: E/AndroidRuntime(837):  at android.app.ActivityThread.main(ActivityThread.java:5103)
10-27 11:25:31.787: E/AndroidRuntime(837):  at java.lang.reflect.Method.invokeNative(Native Method)
10-27 11:25:31.787: E/AndroidRuntime(837):  at java.lang.reflect.Method.invoke(Method.java:525)
10-27 11:25:31.787: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-27 11:25:31.787: E/AndroidRuntime(837):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-27 11:25:31.787: E/AndroidRuntime(837):  at dalvik.system.NativeStart.main(Native Method)
Was it helpful?

Solution 3

I finally realized that I was not referencing correctly the java with the XML id. So, the edit text should've looked like this:

 NewTextInput = (EditText) findViewById(R.id.etSetSubjectName); 

OTHER TIPS

In your Notebook_NewSubject activity, you forgot to initialize your Bundle object.

Bundle NewSubjectBundle; <- declared but not initialized

So when doing NewSubjectBundle.putString(...) it throws a NullPointerException

NullPointerException is often easy to solve.

at eu.lafarga.treballderecerca.Notebook_NewSubject.onClick(Notebook_NewSubject.java:47)

basically tells you that something is not initialized. So you should read this line (i.e line 47 of Notebook_NewSubject.java) and see what could be null.

Try change in Notebook_NewSubject class

NewSubjectBundle.putString("title1L", NewTextInput.getText().toString());
NewSubjectBundle.putInt("int", 1);
mIntent.putExtras(NewSubjectBundle);

To

Intent mIntent = new Intent();
mIntent.putString("title1L", NewTextInput.getText().toString());
mIntent.putInt("int", 1);
setResult(RESULT_OK, mIntent);

And in Notebook class

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        String title = data.getStringExtra("title1L");
        int title = data.getIntExtra("int");
        //////

Edit:-

if you are using Bundle then change

Bundle getNewSubjectBundle = getIntent().getExtras();

To

Bundle getNewSubjectBundle = data.getExtras();

in NoteBook class.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top