Attempt to invoke virtual method 'void android.widget.TextView.append(java.lang.CharSequence)' on a null object reference
我无法通过Button从EditText到TextView获取数据(文本)。
逻辑应该很好,我真的找不到错误。
单击触发" sendMessage(View v)"的按钮后,我立即收到错误消息。
我无法在"聊天"中添加文字,但不知道为什么。
MainActivity.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package com.chattr.neonardo.chattr; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { TextView chat; EditText message; Button send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); chat = (TextView) findViewById(R.id.chat); message = (EditText) findViewById(R.id.message); send = (Button) findViewById(R.id.send); Log.d("test","test2"); /* send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { chat.append(" " + message.getText().toString()); } });*/ } public void onMatchTap(View v) { Toast myToast = Toast.makeText(getApplicationContext(), R.string.searching, Toast.LENGTH_LONG); myToast.show(); setContentView(R.layout.chat_main); Log.d("test","test4"); } public void sendMessage(View v) { Log.d("test","test6"); chat.append(" " + message.getText().toString()); Log.d("test","test7"); } } |
我已经尝试过使用onClickListener进行某些操作,但是无法正常工作,因此我将其注释掉。
main_activity.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.chattr.neonardo.chattr.MainActivity"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/chattr" android:id="@+id/imageView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="91dp" android:onClick="onMatchTap" android:text="@string/start_chat" /> |
我正在使用两个不同的xml,因为我正在更改场景。
chat_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <TextView android:id="@+id/chat" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.00" android:autoLink="web" android:text="@string/chat_connection" android:visibility="visible" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <EditText android:id="@+id/message" android:layout_width="301dp" android:layout_height="wrap_content" android:ems="10" android:inputType="text" android:text="@string/defaultMessage" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="match_parent" android:elevation="0dp" android:onClick="sendMessage" android:text="Send" /> </LinearLayout> |
那是错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | Process: com.chattr.neonardo.chattr, PID: 24340 java.lang.IllegalStateException: Could not execute method for android:onClick at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.append(java.lang.CharSequence)' on a null object reference at com.chattr.neonardo.chattr.MainActivity.sendMessage(MainActivity.java:47) at java.lang.reflect.Method.invoke(Native Method) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) |
删除
您应该使用
1 2 | Intent intent = new Intent(CurrentActivity.this,NextActivity.class); startActivity(intent); |
应该
1 2 3 4 5 6 | public void onMatchTap(View v) { Toast myToast = Toast.makeText(getApplicationContext(), R.string.searching, Toast.LENGTH_LONG).show(); Intent intent = new Intent(MainActivity.this,ChatMain.class); startActivity(intent); Log.d("test","test4"); } |
1 | chat = (TextView) findViewById(R.id.chat); |
此TextView是在chat_main.xml文件中定义的,然后尝试将其绑定到Main Activity中。这就是为什么它将提供NullPointerException的原因。