【问题标题】:Activity does not for an unknown reason活动不是出于未知原因
【发布时间】:2014-03-23 17:35:32
【问题描述】:

LogCat:

03-24 00:27:31.156: E/AndroidRuntime(13836): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxxx.yyyyyy/com.xxxxxx.yyyyyy.Main}: java.lang.NullPointerException

这是我在尝试启动应用程序时在 logCat 中看到的内容。但在我看来,我的代码还可以,所以我不知道问题是什么,请帮忙!提前致谢。

Main.java

package com.xxxxxx.yyyyyy;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;  



public class Main extends Activity
{

Button start;

protected void onCreate(Bundle bundle)
{
    super.onCreate(bundle);
    setContentView(0x7f030010);
    start = (Button)findViewById(0x7f080047);
    start.setOnClickListener(new android.view.View.OnClickListener() {



        public void onClick(View view)
        {
            Intent intent = new Intent(Main.this, Tab1.class);
            startActivity(intent);
        }

    });
}


}

【问题讨论】:

  • an unknown reason 被称为 NPE。
  • 直接使用 id 确实是一种糟糕且危险的做法。不仅不可读,而且如果您要更改设计中的任何内容,那么...祝您好运!
  • Unable to start activity ComponentInfo{com.xxxxxx.yyyyyy/com.xxxxxx.yyyyyy.Main}: java.lang.NullPointerException 对此一无所知。该日志还将准确地告诉您它发生在哪一行。正如其他人所说,硬编码的 ID 几乎肯定是问题所在。每次您更改资源并重建时,它都会改变。 findViewById() 然后将返回 null 和繁荣 - NullPointerException。另外,it seems to me that my code is OK,如果这是真的,你就不会崩溃!
  • 我的 comp 崩溃了一次,我丢失了除 apk 文件之外的所有内容,所以我对它们进行了反编译,它看起来和它看起来一样,带有硬编码的 id..
  • 只需从备份中恢复。如果您不支持,那么对不起,任何人都无能为力,您已经吸取了惨痛的教训。事实上,重写应用程序可能比在反编译后尝试修复它更快。另外,请从 logcat 发布堆栈跟踪,以便我们确认错误。如果您所做的只是重新编译,那么 ID 不会更改,因此很可能是另一个问题。

标签: android nullpointerexception android-activity


【解决方案1】:

为什么要硬编码值?没必要。

当您在布局中添加带有 id 的按钮时,R.java 中会自动输入。初始化视图时,您只需引用 id。

只需确保您的布局有一个按钮,并且您只需在活动中引用相同的按钮

setContentView(R.layout.yourlayout);
start = (Button)findViewById(R.id.startbutton);

Tab1 中的某些内容也有可能为空。

【讨论】:

  • 我的 comp 崩溃了一次,我丢失了除 apk 文件之外的所有内容,所以我对它们进行了反编译,它看起来像它看起来一样,带有硬编码的 id..
  • @user3158610 你重新开始。从不硬编码值
  • 谢谢,我确实将 id 更改为正常的,然后应用程序启动了。但实际上在其他恢复的应用程序中我不必这样做,它们可以很好地使用硬编码的 id..
  • @user3158610 它可能会起作用,但这不是推荐的方式。
【解决方案2】:

您的起始变量很可能为空。使用 Raghunandan 描述的资源来检索 Button 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多