简体   繁体   English

尝试在空对象引用上调用虚拟方法 'Button.setOnClickListener(android.view.View$OnClickListener)'

[英]Attempt to invoke virtual method 'Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Objects that occur in activity_main are null.出现在activity_main 中的对象为空。 I checked objects and IDs.我检查了对象和 ID。 I didn't understand what I couldn't see.我不明白我看不到的东西。

public class MainActivity extends AppCompatActivity
{

Button buttonSend;
TextView textChat;
EditText texSendMessage;
ScrollView scrollView;
Login login;
TextView textSocket;


@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    login = new Login();
    startActivity(new Intent(this, Login.class));


    buttonSend = (Button) findViewById(R.id.button_send);
    textChat = (TextView) findViewById(R.id.text_chat);
    texSendMessage = (EditText) findViewById(R.id.text_sendMessage);
    scrollView = (ScrollView) findViewById(R.id.scroll_view);
    textSocket = (TextView) findViewById(R.id.text_socket);

    OkHttpClient client = new OkHttpClient();
    String URL = "https://reqres.in/api/users?page=2";
    Request request = new Request.Builder()
            .url(URL)
            .build();
    client.newCall(request).enqueue(new Callback()
    {
        @Override
        public void onFailure(Call call, IOException e)
        {
            e.printStackTrace();
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException
        {
            if (response.isSuccessful())
            {
                final String myResponse = response.body().string();

                MainActivity.this.runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        textSocket.setText(myResponse);
                    }
                });
            }

        }
    });


    buttonSend.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Toast.makeText(getApplicationContext(), "Boş metin gönderilemez", Toast.LENGTH_SHORT).show();
        }
    });


    buttonSend.setOnClickListener(v -> {
        if (!searchString(texSendMessage.getText().toString()))
        {
            Toast.makeText(getApplicationContext(), "Boş metin gönderilemez", Toast.LENGTH_SHORT).show();
            texSendMessage.getText().clear();
        }

        if (texSendMessage.getText().length() == 0 || texSendMessage.getText().toString().equals(""))
        {
            Toast.makeText(getApplicationContext(), "Boş metin gönderilemez", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Log.e("TAG", "texSendMessage Boyut : " + texSendMessage.getText().length());
            textChat.append(Login.getShPref().getString("USERNAME", "null") + ": " + texSendMessage.getText().toString() + '\n');
            Log.e("LOG", "texSendMessage buttonSend : /" + texSendMessage.getText().toString() + "/");
            texSendMessage.getText().clear();

            scrollView.post(new Runnable()
            {
                @Override
                public void run()
                {
                    scrollView.smoothScrollTo(0, textChat.getBottom());
                }
            });

        }
    });

}

// arama fonksiyonu ile bosluk veya yeni satırların sayısını tutup
// sadece bosluk, sadece yeni satır veya ikisinden oluşan metinlerin gönderilmesini engeller.
boolean searchString(String s)
{
    String[] strings = s.split("");
    int count = 1;
    for (int i = 0; i < s.length(); i++)
    {
        if (strings[count].equals(" ") || strings[count].equals("\n"))
        {
            count++;
        }
    }
    return count - 1 != s.length();
}

}

The output results in:输出结果为:

Process: com.example.tunca.localconnect, PID: 31163 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tunca.localconnect/com.example.tunca.localconnect.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2858) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1612) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6710) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:77进程:com.example.tunca.localconnect,PID:31163 java.lang.RuntimeException:无法启动活动组件信息{com.example.tunca.localconnect/com.example.tunca.localconnect.MainActivity}: java.lang.NullPointerException:尝试在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2858) at android.app.ActivityThread的空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” .handleLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1612) at android.os.Handler.dispatchMessage( Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6710) 在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:77) 0) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.example.tunca.localconnect.MainActivity.onCreate(MainActivity.java:86) at android.app.Activity.performCreate(Activity.java:6980) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2811) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1612) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6710) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.inter 0) 引起:java.lang.NullPointerException:尝试在 com.example.tunca.localconnect.MainActivity 的空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” .onCreate(MainActivity.java:86) 在 android.app.Activity.performCreate(Activity.java:6980) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread. java:2811) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2933) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1612) ) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6710) 在 java.lang .reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.inter nal.os.ZygoteInit.main(ZygoteInit.java:770) nal.os.ZygoteInit.main(ZygoteInit.java:770)

Clear your question first, It's a code which is not understandable but still, I can give you the ideas where you going wrong.首先澄清你的问题,这是一个无法理解的代码,但我仍然可以给你一些你出错的想法。

  1. Why you have created the Login class which is not used anywhere, login = new Login();为什么你创建了在任何地方都没有使用的 Login 类, login = new Login();

  2. This should be performed on click event, you have called in the onCreate method also The intent Activity class must be added into the Manifest file.这应该在单击事件上执行,您在 onCreate 方法中也调用了 Intent Activity 类必须添加到 Manifest 文件中。 startActivity(new Intent(this, Login.class));开始活动(新意图(这个,登录。类));

  3. Network call also should be called on click event.也应该在点击事件上调用网络调用。

Hope you get the idea about your error.希望你对你的错误有所了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android Studio:尝试在空对象引用上调用虚拟方法&#39;... Button.setOnClickListener(android.view.View $ OnClickListener)&#39; - Android Studio: attempt to invoke virtual method '…Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 错误 - 尝试在空对象引用上调用虚拟方法___________setOnClickListener(android.view.View$OnClickListener)&#39; - Error- Attempt to invoke Virtual Method___________setOnClickListener(android.view.View$OnClickListener)' on a null object reference Android:尝试在 null object 引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” - Android:Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” - Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 尝试在空对象引用上调用虚拟方法“void android.view.View.setOnClickListener(android.view.View$OnClickListener)” - Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference Android错误:尝试在空对象引用上调用虚拟方法……setOnClickListener(android.view.View $ OnClickListener)&#39; - Android Error: Attempt to invoke virtual… setOnClickListener(android.view.View$OnClickListener)' on a null object reference android尝试在空对象引用上调用虚拟方法Button.setOnClickListener - android Attempt to invoke virtual method Button.setOnClickListener on a null object reference 错误 Android 尝试调用虚拟方法 &#39;void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)&#39; - Error Android Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' Android Listview: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference - Android Listview: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference FacebookSdk尝试在空对象引用上调用虚拟方法&#39;android.view.View android.view.View.findViewById(int)&#39; - FacebookSdk Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM