添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

无法在android studio中启动活动ComponentInfo

0 人关注

i get this error:

ntime:失败的异常:main 进程:com.example.puzzle_project,PID:4100 java.lang.RuntimeException。无法启动活动 ComponentInfo{com.example.puzzle_project/com.example.puzzle_project.MainActivity}: java.lang.NullPointerException:试图对一个空对象引用调用虚拟方法'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)'。

但我不知道问题出在哪里。

我的mainActivity是。

package com.example.puzzle_project;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_TEXT="com.example.application.example.EXTRA_TEXT";
    public static final String EXTRA_NUMBER="com.example.application.example.EXTRA_NUMBER";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openActivity2();
        public void openActivity2(){
            EditText editText1= (EditText) findViewById(R.id.edittext1);
            String text= editText1.getText().toString();
            EditText editText2=(EditText)findViewById(R.id.edittext2);
            int number = Integer.parseInt(editText2.getText().toString());
            Intent intent = new Intent(this, Activity2.class);
            intent.putExtra(EXTRA_TEXT,text);
            intent.putExtra(EXTRA_NUMBER,number);
            startActivity(intent);
    
java
android
null
MOLO
MOLO
发布于 2022-06-23
3 个回答
Nicolas Zanforlini
Nicolas Zanforlini
发布于 2022-06-23
已采纳
0 人赞同

取出方法中的元素,并在类activity中不使用findviewbyid进行初始化,在方法onClick()中使用 "findviewbyid "作为你的元素,并将这些元素作为方法openActivity2()的参数。

我没有尝试过,但我认为这就是问题所在。

Sandesh KhutalSaheb
Sandesh KhutalSaheb
发布于 2022-06-23
0 人赞同

Try this code

Follow 2 things-

  • Before sending data check isempty or null.
  • Add inputType in xml for particular editTexts Ex. your second EditText is Number so add
  • android:inputType="number"

    public class MainActivity extends AppCompatActivity {
        public static final String EXTRA_TEXT = "com.example.application.example.EXTRA_TEXT";
        public static final String EXTRA_NUMBER = "com.example.application.example.EXTRA_NUMBER";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    openActivity2();
        public void openActivity2() {
            EditText editText1 = (EditText) findViewById(R.id.edittext1);
            String text = editText1.getText().toString();
            EditText editText2 = (EditText) findViewById(R.id.edittext2);
            String number = (editText2.getText().toString());
            if (text.isEmpty() || number.isEmpty()) {
                Toast.makeText(this, "Please add inputs", Toast.LENGTH_LONG).show();
                return;
            Intent intent = new Intent(this, Activity2.class);
            intent.putExtra(EXTRA_TEXT, text);
            intent.putExtra(EXTRA_NUMBER, number);
            startActivity(intent);
        
    Harsh Chourasiya
    Harsh Chourasiya
    发布于 2022-06-23
    0 人赞同

    替换代码0

    String name = null;
    int len = name.length();
    

    这也会抛出NullPointerException。每个程序员都会遇到这种类型的错误,这很常见,解决这个问题的最好方法是阅读错误,就像你在问题中分享的那样:-。

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.puzzle_project/com.example.puzzle_project.MainActivity}:
    java.lang.NullPointerException: Attempt to invoke virtual method 'void 
    android.widget.Button.setOnClickListener(android.view.View$OnClickListener)'
    on a null object reference
    

    让我们试着理解这个错误,它想说的是什么。

    第一行是Unable to start activity意味着OnCreate()方法有问题,因为第一个OnCreate()方法被调用来启动任何活动。

    第二行是Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference。正如你所读到的,试图调用方法于NULL OBJECT REFRENCE这意味着你在点击空对象时调用,意味着按钮是空的。

    现在让我们来了解一下为什么按钮是空的,按钮是空的原因如下:------。

  • button is not initialize ( But You did it ).
  • method is returning null from which we get button from means findViewById() is returning null. ( It Maybe a case)
  • 现在为什么findViewById()会返回null,因为你可能输入了错误的id,findViewById无法在视图中找到你的id。