当前位置: 首页 > 知识库问答 >
问题:

当我运行它时,Android聊天应用程序一直在崩溃

隆选
2023-03-14

经过几天的计划,我刚刚开始为我的聊天应用程序编写一些代码,但问题是,在Gradle Build完成并将应用程序安装在我的设备上之后,它一直在崩溃。我创建了一个预计会打开新活动的按钮,但它没有这样做,而是崩溃了。在我编写任何代码之前,一切都正常,应用程序打开,logcat没有显示任何错误。以下是错误:

    2022-08-10 19:26:48.372 15348-15348/? E/e.myapplicatio: Unknown bits set in runtime_flags: 0x40000000
2022-08-10 19:26:48.391 15348-15348/? E/RefClass: java.lang.reflect.InvocationTargetException
2022-08-10 19:26:48.474 15348-15348/com.example.myapplication E/Perf:  perftest packageName : com.example.myapplication App is allowed to use Hide APIs  
2022-08-10 19:26:48.515 15348-15374/com.example.myapplication E/libEGL: Invalid file path for libcolorx-loader.so
2022-08-10 19:26:48.528 15348-15348/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 15348
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3628)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3887)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:263)
        at android.app.ActivityThread.main(ActivityThread.java:8292)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
        at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:183)
        at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:174)
        at android.content.Context.obtainStyledAttributes(Context.java:744)
        at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:848)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:815)
        at androidx.appcompat.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:640)
        at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:259)
        at com.example.myapplication.MainActivity.<init>(MainActivity.java:12)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1254)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3616)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3887) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:140) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:100) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:263) 
        at android.app.ActivityThread.main(ActivityThread.java:8292) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006) 

我试着遵循其他一些建议,但都不起作用。以下是我的代码片段:

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

public Button signUp = findViewById(R.id.signUpBtn);

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

    signUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            openActivity();
        }
    });
}

public void openActivity(){
    Intent intent = new Intent(this, LoginActivity.class);
    startActivity(intent);
}

}

共有1个答案

黄丰
2023-03-14

您不能像这样在< code>onCreate()之外使用< code>findViewById(),如果您真的想这样做,请创建一个新的方法来设置IDs,然后将该方法添加到< code>onCreate()中。

下面的代码将完成这项工作:

    package com.example.myapplication;
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Button;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
    public Button signUp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        signUp = findViewById(R.id.signUpBtn);
        signUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openActivity();
            }
        });
    }
    
    public void openActivity(){
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }
}
 类似资料:
  • 我尝试使用mvp开发一对一的聊天应用程序,当应用程序第一次运行时,聊天工作正常,消息发送给用户。问题是,当我尝试注册另一个帐户并尝试发送消息时,firebase创建了两个不同的聊天室,但我无法获得消息,因为第二个用户没有检测到聊天室已经创建并创建了另一个聊天室,请帮助我?这是我试图发送消息的代码: 最终字符串room_type_1=chat.getSenderUID()+“_”+chat.getR

  • 我在android studio虚拟设备nexus 6中卸载了kotlin制作的应用程序,当我再次尝试构建gradle时,它显示了这个错误。帮我修一下。 e:C:/Users/acer/。gradle/caches/transforms-2/files-2.1/3f5d451ee838e9d174f4df0a62e3601f/jetified-core-ktx-1.7.0-api。罐子/META-

  • 我在我的Android应用程序中使用GSON来解析数据。我已经在模型对象中添加了枚举。添加枚举后,我的应用程序开始崩溃。当我让runProguard假的时候,一切都很好。当程序是真的时,我做了我能在网上找到的一切来修复这个问题。但还是没运气。 我已经在proguard-rule文件中做了以下事情 枚举材料示例: 我的堆栈跟踪

  • 我是android开发的初学者。我创建了一个活动并添加了一个按钮。然后,我添加了一个事件侦听器,在单击按钮时打开另一个活动。到目前为止,这两个班都是 和 MainActivity的布局文件如下 谁能告诉我这是怎么了?为什么应用程序一直停止?

  • 总结问题 你好,开发人员,所以。。我想做一个弹出菜单,点击下面的图标,它就会出现在列表视图中的一个项目上。我想这样做,点击出现一个带有一些选项的弹出栏 描述一下你的尝试 我试着按照有关创建弹出式菜单的教程进行操作,但方法总是一样的,我对此没有问题。但它在Logcat上显示了这个空指针错误,我试图用初始化ImageView来修复它,但目前没有任何进展。。例如,我尝试执行“image=(Imagevi