【问题标题】:Learning to debug学习调试
【发布时间】:2014-01-22 16:32:45
【问题描述】:

早上好,

我正在学习调试应用程序并创建了一个测试应用程序,它返回“不幸的是,LearningActivities 已停止”。当我在应用程序中按下按钮时的消息。

该应用程序非常基本......基本上,您将文本输入到 n EditText 字段中,然后按下按钮,它应该会启动第二个活动,该活动会在 TextView 字段中显示该文本。当我按下按钮时,我就会收到错误消息。

我已经在它上面运行了一个 logcat,正在寻找一些帮助来理解我到底在看什么。

01-22 11:26:11.877: E/AndroidRuntime(23917): FATAL EXCEPTION: main
01-22 11:26:11.877: E/AndroidRuntime(23917): Process: com.rcd.learningactivities, PID: 23917
01-22 11:26:11.877: E/AndroidRuntime(23917): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rcd.learningactivities/com.rcd.learningactivities.secondActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x0
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2190)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread.access$700(ActivityThread.java:139)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1411)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.os.Looper.loop(Looper.java:137)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread.main(ActivityThread.java:5083)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at java.lang.reflect.Method.invoke(Method.java:515)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at dalvik.system.NativeStart.main(Native Method)
01-22 11:26:11.877: E/AndroidRuntime(23917): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.content.res.Resources.getText(Resources.java:244)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.widget.TextView.setText(TextView.java:3899)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at com.rcd.learningactivities.secondActivity.onCreate(secondActivity.java:16)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.Activity.performCreate(Activity.java:5260)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
01-22 11:26:11.877: E/AndroidRuntime(23917):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154)
01-22 11:26:11.877: E/AndroidRuntime(23917):    ... 11 more

任何帮助将不胜感激!

如果任何其他信息会有所帮助,请告诉我...如果您能够指出我应该在哪里解决问题的正确方向,那也很棒。

谢谢!

编辑:

这是我的 secondActivity.java

package com.rcd.learningactivities;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class secondActivity extends Activity {

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

        TextView tv = (TextView) findViewById(R.id.textView1);
        tv.setText(getIntent().getExtras().getShort("tbtext"));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

这是我的 secondactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

【问题讨论】:

  • Eclipse logcat debugging 的可能重复项
  • 我的猜测是,您尝试在EditText 上调用setText(),并且您使用int 代替param 而不是StringSee the docs for the different methods
  • 或者您只需要清理项目 - R 文件可能没有正确生成...
  • 你能告诉我们secondActivity.java第16行吗?
  • Also see this answer 我很确定这是您的问题,但如果不是,请发布您的onCreate()

标签: java android debugging logcat


【解决方案1】:

调试的一大要素是能够对日志文件的垃圾进行分类并找到与您相关的信息。通常,这是描述您编写的应用程序的任何部分的日志的任何部分。在这种情况下,就是这里的这一行:

01-22 11:26:11.877: E/AndroidRuntime(23917):    at com.rcd.learningactivities.secondActivity.onCreate(secondActivity.java:16)

看起来 src/com/rcd/learningactivities/secondActivity 第 16 行发生的任何事情都失败了,因为它找不到资源(我假设它找不到 TextView。看看代码并将其与相应的 XML 进行比较。ID 是否匹配?您是否在 Java 中调用正确的方法以编程方式写入文本视图?您是否在 XML 中正确构建了 TextView 对象?)

它无法正常工作的原因可能有很多,但找出它的关键在于您的第二个活动 Java 文件的第 16 行。祝你好运,狩猎愉快!

【讨论】:

  • 谢谢!答案是当我让 eclipse 自动完成我的写作时,它选择了 getShort 而不是 getString!这就是问题所在。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多