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