-3

I am trying to copy a simple text view to another textview in android with the help of an onClick event of Button. I am new to android. I am getting following exception

FATAL EXCEPTION: mainProcess: com.example.administrator.test1, PID: 4425
              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.test1/com.example.administrator.test1.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

MainActivity.java

package com.example.administrator.test1;

//import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button b1;
    TextView Text1;
    TextView copiedText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b1=(Button)findViewById(R.id.CopyText);
        Text1 = (TextView)findViewById(R.id.Textbox1);
        copiedText = (TextView)findViewById(R.id.TextBox2);
        b1.setOnClickListener(new View.OnClickListener(){
          @Override
            public void onClick(View v){
                String a= (String) Text1.getText();
                copiedText.setText(a);
            }

        });

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.administrator.test1.MainActivity">

    <TextView
        android:id="@+id/Textbox1"
        android:textSize="25dp"
        android:hint="Enter Your Text Here"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:layout_marginTop="30dp"
        android:id="@+id/TextBox2"
        android:layout_below="@+id/Textbox1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="Your Text Appears Here"/>

    <Button

        android:text="Copy Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/CopyText"
        android:layout_marginLeft="107dp"
        android:layout_marginStart="107dp"
        android:layout_below="@+id/TextBox2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="85dp" />

</RelativeLayout>

2 Answers2

0

you should use textbox.getText().toString() to get the text in textView editText or else

 String a= Text1.getText().toString();
 copiedText.setText(a);

update: This is working code. Changed TextView to EditText to get user input.

layout

    <EditText
        android:id="@+id/Textbox1"
        android:textSize="25dp"
        android:hint="Enter Your Text Here"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:layout_marginTop="30dp"
        android:id="@+id/TextBox2"
        android:layout_below="@+id/Textbox1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:hint="Your Text Appears Here"/>

    <Button

        android:text="Copy Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/CopyText"
        android:layout_marginLeft="107dp"
        android:layout_marginStart="107dp"
        android:layout_below="@+id/TextBox2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="85dp" />

</RelativeLayout>

java

Button b1;
    EditText Text1;
    TextView copiedText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b1=(Button)findViewById(R.id.CopyText);
        Text1 = (EditText)findViewById(R.id.Textbox1);
        copiedText = (TextView)findViewById(R.id.TextBox2);
        b1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                String a= Text1.getText().toString();
                copiedText.setText(a);
            }

        });

}
Sadiq Md Asif
  • 882
  • 6
  • 18
0

Instead of writing tools:context="com.example.administrator.test1.MainActivity" attribute please write this like tools:context=".MainActivity".

  • tools:context is not causing that error, that line is used to display themes which are binded to Activity (only used for displaying layout inside studio), tools:context line will be removed at runtime – Manohar Jan 10 '17 at 05:53