[英]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.首先澄清你的问题,这是一个无法理解的代码,但我仍然可以给你一些你出错的想法。
Why you have created the Login class which is not used anywhere, login = new Login();为什么你创建了在任何地方都没有使用的 Login 类, login = new Login();
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));
开始活动(新意图(这个,登录。类));
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.