【问题标题】:Androidruntime: FATAL EXCEPTION'sAndroidruntime:致命异常
【发布时间】:2016-09-01 21:32:46
【问题描述】:

我已经在 AndroidStudio 1.5 版中编写了我的项目,一段时间后,我为 2.1.2 版编写了相同的项目(主要是从旧项目中复制粘贴我的 java 方法),现在它向我显示了 FATAL EXCEPTION 16 错误我应该做什么摆脱这些错误。 以下是例外情况。

FATAL EXCEPTION: main
  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.imtiaz.recognizer/com.example.imtiaz.recognizer.MainActivity}:java.lang.NullPointerException
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2232)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
  at android.app.ActivityThread.access$700(ActivityThread.java:168)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:177)
  at android.app.ActivityThread.main(ActivityThread.java:5493)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:525)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
  at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
  at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:116)
  at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:147)
  at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:27)
  at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:50)
  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
  at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181)
  at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521)
  at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190)
  at java.lang.Class.newInstanceImpl(Native Method)
  at java.lang.Class.newInstance(Class.java:1130)
  at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2223)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
  at android.app.ActivityThread.access$700(ActivityThread.java:168)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:177)
  at android.app.ActivityThread.main(ActivityThread.java:5493)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:525)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
  at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • at com.example.imtiaz.recognizer.MainActivity.&lt;init&gt;(MainActivity.java:26) MainActivity.java 的第 26 行是什么?还要发布构造函数的其余部分。
  • 您可能在 OnCreate() 之前为您的一个或多个字段调用 findViewById()。在 OnCreate() 中使用它们。
  • 是的,我不小心初始化了 Activity 子类中的一个字段。重建项目,我会更新问题。

标签: android android-layout android-studio nullpointerexception


【解决方案1】:
...
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:190)
at com.example.imtiaz.recognizer.MainActivity.<init>(MainActivity.java:26)
...

您似乎在Activity 子类的构造函数中调用了findViewById()。你不可以做这个。您必须改为在 onCreate() 方法中进行所有初始化。我强烈建议您了解activity lifecycle。您必须正确使用它才能编写任何 Android 应用程序。

【讨论】:

  • 我没有在我的 Activity 的子类中调用 findViewById()。
  • @ABi 您发布的堆栈跟踪另有说明。请使用 MainActivity 的构造函数的代码编辑您的问题,并指出第 26 行的位置。
  • 我的应用是的,我在一个字段中使用了 findViewById()。
  • @ABi 这是不允许的,因为在调用构造函数时没有创建任何视图。请参阅我提供的有关活动生命周期的链接。
  • 谢谢,我的应用程序正在运行,但在单击事件/委托时停止第二个活动,我认为可能是因为进度条。我会在早上更新我的代码。
【解决方案2】:

要修复该错误,您必须提及 onCreate 方法本身以及类中的所有 activity 组件,如下所示

public class LoginActivity extends AppCompatActivity {
private TextView ForgetPass;
private Button Login,Signup;
private EditText UserName,Password;


onCreate 
{
    Login = (Button)findViewById(R.id.login);
    Signup = (Button)findViewById(R.id.signup);
    ForgetPass = (TextView)findViewById(R.id.forgetPass);
    UserName = (EditText)findViewById(R.id.userName);
    Password = (EditText)findViewById(R.id.password);

    helper = new DatabaseHelper(this);

    Signup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent1 = new Intent(LoginActivity.this,SignUpActivity.class);
            startActivity(intent1);
        }
    });
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2022-10-25
    • 2019-01-10
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多