【问题标题】:android ui widget init causing errorsandroid ui小部件初始化导致错误
【发布时间】:2012-04-14 00:50:43
【问题描述】:

我对android编程很陌生,所以请原谅。

我有一个任务,我需要在当前代码库的 xml 中添加一个文本框,然后在用户编辑文本框时更改代码中的变量。

所以我添加了文本框,它显示得很好,但是当我尝试初始化它时,我收到一个错误,表明应用程序意外停止并且 LogCat 中有一堆东西。

澄清:只有最后一个文本框 intersymboltime 会导致错误。如果我注释掉它的初始化,一切都会运行良好。

我的 xml 示例(前两个来自现有代码,用于比较):

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/hostText"
        android:layout_marginTop="5dp"
        android:text="@string/portlabel"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/portText"
        android:layout_width="110dp"
        android:layout_height="35dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView3"
        android:hint="@string/portHint"
        android:inputType="number|textNoSuggestions" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/portText"
        android:layout_marginTop="14dp"
        android:text="@string/symboltime" />

    <EditText
        android:id="@+id/intersymboltime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView4"
        android:ems="10"
        android:hint="@string/symboltimehint"
        android:inputType="number" />

在我的 onCreate 中(前两个调用在现有代码中,用于比较):

    ((TextView)findViewById(R.id.hostText)).setText(mServerHost);
    ((TextView)findViewById(R.id.portText)).setText(new Integer(mServerPort).toString()); 
    ((TextView)findViewById(R.id.intersymboltime)).setText(mClient.portToIntersymbolTime(mServerPort, 1));

portToIntersymbolTime 按预期返回。

我错过了什么?!

编辑:我的 logcat 日志:

04-13 18:10:17.556:W/ResourceType(716):获取资源编号 0x00000100 的值时没有包标识符 04-13 18:10:17.566: D/AndroidRuntime(716): 关闭虚拟机 04-13 18:10:17.566: W/dalvikvm(716): threadid=1: 线程以未捕获的异常退出 (group=0x40015560) 04-13 18:10:17.576:E/AndroidRuntime(716):致命异常:主要 04-13 18:10:17.576: E/AndroidRuntime(716): java.lang.RuntimeException: 无法启动活动 ComponentInfo{edu.uw.cs.cse461.sp12.timingframing/edu.uw.cs.cse461.sp12。 timingframing.TimingFramingAndroidActivity}:android.content.res.Resources$NotFoundException:字符串资源 ID #0x100 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.os.Handler.dispatchMessage(Handler.java:99) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.os.Looper.loop(Looper.java:123) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 java.lang.reflect.Method.invoke(Method.java:507) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 04-13 18:10:17.576: E/AndroidRuntime(716): at dalvik.system.NativeStart.main(Native Method) 04-13 18:10:17.576:E/AndroidRuntime(716):原因:android.content.res.Resources$NotFoundException:字符串资源 ID #0x100 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.content.res.Resources.getText(Resources.java:201) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.widget.TextView.setText(TextView.java:2857) 04-13 18:10:17.576: E/AndroidRuntime(716): at edu.uw.cs.cse461.sp12.timingframing.TimingFramingAndroidActivity.onCreate(TimingFramingAndroidActivity.java:39) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-13 18:10:17.576: E/AndroidRuntime(716): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 04-13 18:10:17.576: E/AndroidRuntime(716): ... 11 更多

【问题讨论】:

    标签: java android android-widget


    【解决方案1】:

    发布您的 logcat 肯定有助于缩小范围。我首先要看的是mClient.portToIntersymbolTime(mServerPort, 1) 的返回类型是什么。 EditText 需要输入CharSequence。我确定您需要使用.toString 或类似的东西。

    【讨论】:

    • 返回类型是 int。我认为它需要任何 println 或类似的东西,这意味着一个 int 就可以了。这是一种误解吗?
    • mClient 是另一个类的扩展,您可以添加一个 toString 方法(假设那里还没有一个)来创建和格式化您想要的字符串。或者如果它是一个 int 则将其保存到 int 并使用 toString 作为:new int symbolTime = mClient.portToIntersymbolTime(mServerPort, 1); 然后((TextView)findViewById(R.id.intersymboltime)).setText(symbolTime.toString)
    • 另一个想法,如果定期更新,您应该将从 findViewById 获得的控件保存到变量中。这应该会加快速度。
    【解决方案2】:

    根据给定的信息,很难调试您的代码。您能否将 Logcat 的错误日志以及您的 portToIntersymbolTime 代码提供给我们? 根据我现在看到的,您的 xml 中缺少 hostText。但我认为(因为您说 ((TextView)findViewById(R.id.hostText)).setText(mServerHost); 是现有代码的一部分)您只是没有粘贴 xml 的那部分。

    【讨论】:

    • 对不起,我应该澄清一下,这是最后一个,intersymboltime,导致错误。我只是提供了 sn-ps 所以它不是一大块代码。我将尝试找出足以发布错误日志的 logcat。
    • 如果您使用的是 eclipse,可以将 logcat 作为可停靠窗口添加到其中。转到“窗口->显示视图->其他”。展开 Android 并选择 logcat。再次运行您的代码,错误在那里显示为红色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2011-09-17
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多