2017-01-10 63 views
-3

我想在Button的onClick事件的帮助下,将简单的文本视图复制到android中的另一个textview。我是android新手。我得到以下异常Android null异常onClickListener()

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> 
+0

代码如下: –

+1

发布你的java文件代码 – AbhayBohra

+0

@suraj borge:你的'OnClickListener'的邮政编码在这里! – AndiGeeky

回答

0

你应该使用textbox.getText().toString()来获得textVieweditText否则

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

更新:这是工作代码。将TextView更改为EditText以获取用户输入。

布局

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

     }); 

} 
+0

但是异常是这样的 –

+0

无法启动活动ComponentInfo {com.example.administrator.test1/com.example.administrator.test1.MainActivity}:java.lang.NullPointerException:尝试调用虚方法'void android.widget .Button.setOnClickListener(android.view.View $ OnClickListener)'上的空对象引用 –

+0

看看更新部分。测试和它的工作 –

0

的书写工具而不是:上下文= “com.example.administrator.test1.MainActivity” 属性,请写一样的工具:上下文=” 。主要活动”。

+0

工具:上下文不会导致该错误,该行用于显示绑定到活动的主题(仅用于显示工作室内的布局), 工具:上下文线将在运行时被删除 – Redman