Reputation: 67
I want to display following output: NAME : _ USN : _ ADDRESS : _
I want to display it in a single text view. When I tried using 2 text views it worked. But to use a single text view I used String builder, But when i click submit button, My application gets crashed. Why it's happening?
/*main.xml*/
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.assignment3.MainActivity"
tools:ignore="MergeRootFrame" >
<TextView
android:id="@+id/name"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="43dp"
android:text="@string/name" />
<EditText
android:id="@+id/edit_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="95dp"
android:gravity="center"
android:inputType="textMultiLine"
android:hint="@string/edit_name" />
<TextView
android:id="@+id/usn"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_below="@+id/name"
android:layout_marginTop="30dp"
android:paddingLeft="52dp"
android:text="@string/usn" />
<EditText
android:id="@+id/edit_usn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_name"
android:layout_marginLeft="95dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:inputType="textMultiLine"
android:hint="@string/edit_usn" />
<TextView
android:id="@+id/add"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:layout_below="@+id/usn"
android:layout_marginTop="40dp"
android:paddingLeft="20.3dp"
android:text="@string/add" />
<EditText
android:id="@+id/edit_add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_usn"
android:layout_marginLeft="95dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:inputType="textMultiLine"
android:hint="@string/edit_add" />
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="230dp"
android:layout_centerHorizontal="true"
android:text="@string/submit"/>
</RelativeLayout>
/*layout file*/
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Student Application Form</string>
<string name="name">NAME :</string>
<string name="edit_name">Enter your Name</string>
<string name="usn">USN :</string>
<string name="edit_usn">Enter the Usn</string>
<string name="add">ADDRESS :</string>
<string name="edit_add">Enter the Address</string>
<string name="submit">Submit</string>
<string name="number">1.</string>
<string name="action_settings">Settings</string>
<string name="title_activity_details">Details</string>
<string name="hello_world">Hello world!</string>
</resources>
/*Activity_details.xml*/
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.assignment3.MainActivity"
tools:ignore="MergeRootFrame" >
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:text="@string/number"
android:textStyle="bold" />
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:paddingLeft="43dp"
android:text="@string/name"
android:textStyle="bold" />
<TextView
android:id="@+id/usn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/name"
android:layout_marginTop="15dp"
android:paddingLeft="52dp"
android:text="@string/usn"
android:textStyle="bold"/>
<TextView
android:id="@+id/add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/usn"
android:layout_marginTop="20dp"
android:paddingLeft="20.3dp"
android:text="@string/add"
android:textStyle="bold" />
</RelativeLayout>
/*Main Activity.java*/
package com.example.assignment4;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity implements OnClickListener{
Button btn;
EditText etext1;
EditText etext2;
EditText etext3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etext1 = (EditText) findViewById(R.id.edit_name);
etext2 = (EditText) findViewById(R.id.edit_usn);
etext3 = (EditText) findViewById(R.id.edit_add);
/** Called when the user clicks the Submit button */
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, DetailsActivity.class);
intent.putExtra("name", etext1.getText().toString());
intent.putExtra("usn", etext2.getText().toString());
intent.putExtra("address", etext3.getText().toString());
startActivity(intent);
}
}
I passed the intent from this class to Details class. But when I click submit,it gets crashed. But Before it was working properly. After I added string builder, it started giving problem.
/*Details.java*/
package com.example.assignment3;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
public class Details extends ActionBarActivity {
TextView text1;
TextView text2;
TextView text3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
//Typeface boldTypeface = Typeface.defaultFromStyle(Typeface.BOLD);
//String Builder to append strings
StringBuilder sb1=new StringBuilder();
StringBuilder sb2=new StringBuilder();
StringBuilder sb3=new StringBuilder();
//Receiving the intent
Intent intent=getIntent();
//Extracting the string
String Name=intent.getStringExtra("name");
String Usn=intent.getStringExtra("usn");
String Address=intent.getStringExtra("address");
//get the string from a textview
String stext1=getString(R.id.name);
sb1.append(stext1);
sb1.append(Name);
text1.setText(sb1);
String stext2=getString(R.id.usn);
sb2.append(stext2);
sb2.append(Usn);
text2.setText(sb2);
String stext3=getString(R.id.add);
sb3.append(stext3);
sb3.append(Address);
text3.setText(sb3);
}
}
I'm getting Run Time Exception and Null Pointer exception in Logcat
Upvotes: 1
Views: 4274
Reputation: 12733
you forgot to initialize textviews.
change your code like below:
public class Details extends ActionBarActivity {
TextView text1;
TextView text2;
TextView text3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
text1 = (TextView)findViewById(R.id.name);
text2 = (TextView)findViewById(R.id.usn);
text3 = (TextView)findViewById(R.id.add);
//Typeface boldTypeface = Typeface.defaultFromStyle(Typeface.BOLD);
//String Builder to append strings
StringBuilder sb1=new StringBuilder();
StringBuilder sb2=new StringBuilder();
StringBuilder sb3=new StringBuilder();
//Receiving the intent
Intent intent=getIntent();
//Extracting the string
String Name=intent.getStringExtra("name");
String Usn=intent.getStringExtra("usn");
String Address=intent.getStringExtra("address");
//get the string from a textview
String stext1= getResources().getString(R.string.name);
text1.setText(Html.fromHtml("<b>" + stext1+ "</b>" +Name));
String stext2= getResources().getString(R.string.usn);
text2.setText(Html.fromHtml("<b>" + stext2+ "</b>" +Usn));
String stext3= getResources().getString(R.string.add);
text3.setText(Html.fromHtml("<b>" + stext3+ "</b>" +Address));
}
}
Upvotes: 2
Reputation: 18933
As Simple you have just declared your TextView
s, not initialize it
TextView text1;
TextView text2;
TextView text3;
So initialize it on onCreate()
method
text1 = (TextView)findViewById(R.id.name);
text2 = (TextView)findViewById(R.id.usn);
text3 = (TextView)findViewById(R.id.add);
Upvotes: 1
Reputation: 2030
try changing these:
String stext1=getString(R.id.name);
to
String stext1=(findViewById(R.id.name)).getText().toString();
String stext2=getString(R.id.usn);
to
String stext2=(findViewById(R.id.usn)).getText().toString();
String stext3=getString(R.id.add);
to
String stext3=(findViewById(R.id.add)).getText().toString();
Upvotes: 0