Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在空对象引用上调用虚拟方法“void android.widget.TextView.append(java.lang.CharSequence)”_Java_Android_Xml_Android Layout_Android Studio - Fatal编程技术网

尝试在空对象引用上调用虚拟方法“void android.widget.TextView.append(java.lang.CharSequence)”

尝试在空对象引用上调用虚拟方法“void android.widget.TextView.append(java.lang.CharSequence)”,java,android,xml,android-layout,android-studio,Java,Android,Xml,Android Layout,Android Studio,我无法通过按钮将datatext从EditText获取到TextView。 逻辑应该很好,我真的找不到错误 我一单击触发sendMessageView v的按钮就得到了错误。 我不能在聊天中添加文字,但我不知道为什么 MainActivity.java: package com.chattr.neonardo.chattr; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import and

我无法通过按钮将datatext从EditText获取到TextView。 逻辑应该很好,我真的找不到错误

我一单击触发sendMessageView v的按钮就得到了错误。 我不能在聊天中添加文字,但我不知道为什么

MainActivity.java:

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("\n" + 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("\n" + message.getText().toString());
        Log.d("test", "test7");
    }

}
我尝试了onClickListener的一些功能,但没有成功,所以我将其注释掉

main_activity.xml:

<?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" />
删除setContentViewR.layout.chat_main

您应该使用Intent在onClick方法内打开一个新活动

应该是

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

此文本视图在chat_main.xml文件中定义,您尝试将其绑定到主活动中。这就是为什么它会给您带来NullPointerException。

首先在myToast.show之后删除setContentView;不清楚你想做什么。聊天字段不在主布局中,因此您希望从何处获取该字段?@IntelliJAmiya当我删除该字段时,它不再改变xml场景。@闪电战我正在尝试创建两个场景xml,如果我单击第一个按钮main_activity.xml,chat_main.xml将加载文本视图,编辑文本和按钮。您必须启动新活动或使用片段。你不能只在活动中切换contentview。但是我该如何解决这个问题呢?我必须在另一个类中实现sendMessage方法吗?只需更改setContentViewR.layout.activity\u main;设置ContentViewr.layout.chat_活动;和chat.settext您需要在此处创建文本。这是您的下一个活动。然后将setContentView放在其中。
    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)
Intent intent = new Intent(CurrentActivity.this,NextActivity.class);
startActivity(intent);
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");
    }
chat = (TextView) findViewById(R.id.chat);