学习调试

时间:2014-01-22 16:32:45

标签: java android debugging logcat

早上好,

我正在学习调试应用程序,并创建了一个测试应用程序,它返回“不幸的是,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

任何帮助将不胜感激!

如果有任何其他信息有用,请告诉我们......如果您能够指出我正确的方向,我应该寻求解决问题,那也很棒。< / p>

谢谢!

编辑:

这是我的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>

1 个答案:

答案 0 :(得分:2)

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

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行。祝你好运,快乐狩猎!