TextView无法解析

9

现在我知道这些是相当常见的问题,但我正在使用一个无法解决的TextView。我已经清理了项目,导入了android.widget.TextView,但它仍然被标记为未解决。

这是我正在使用的代码:

public void onStart() {
        super.onStart();

        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet("http://1.php");
        HttpResponse response = client.execute(request);

        // Get the response
        BufferedReader rd = new BufferedReader
          (new InputStreamReader(response.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            TextView.append(line);
        } 

    }

activity_main中的TextView:

<TextView
        android:id="@+id/TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10">



    </TextView>

请对此有何想法?

编辑:

TextView textView = (TextView) findViewById(R.id.TextView1);

String line = ""; 
while ((line = rd.readLine()) != null) { 
    TextView1.append(line);
}

以TextView1开头的结束行提供了错误,指出它无法解析。只有TextView1,而不是整行。

编辑于2012年10月28日:

好的,现在TextView正在工作,但反过来,代码的其他部分却没有。这是一个屏幕截图,显示了确切的情况。我可以将每个语句都包装在try和catch语句中,但然后应用程序会在我的Android设备上强制关闭。

http://southwestdesign.org.uk/Code.jpg

请问这个有什么想法吗?


2
TextView.append(line);:类TextView没有静态方法append(String) - Renato Lochetti
你尝试把代码移到 onStart() 方法中了吗? - Pete
同样的错误,Pete,我没有预料到这一点 - 应该是一个大学项目,现在无法真正改变。任何帮助都非常感激。 - UKPixie
问题可能是因为您正在扩展SmallApplication。许多方法/代码需要您扩展Activity而不是SmallApplication。在这种情况下,您可以尝试创建一个Activity实例。 - Pete
4个回答

18

你是否导入了TextView?

import android.widget.TextView;

从技术上讲,从nouget 7.0开始,这不是你导入的方式,但你的想法是正确的,导入正确的TextView是问题所在。我相信这是一个IDE(Android Studio)的问题。我将发布一个更完整的答案。 - Christian Matthew

7

您需要获取特定的TextView:

TextView textView = (TextView) findViewById(R.id.TextView);
String line = "";
while ((line = rd.readLine()) != null) {
    textView.append(line);
} 

你真的应该给TextView一个独特且更具描述性的id,比如android:id="@+id/webContentTV"。这样,当你使用10-20个TextView时,你可以轻松地跟踪它们。


附加说明
XML中的id

<!-- Notice I gave this TextView a more descriptive id. -->
<TextView
    android:id="@+id/webContentTV"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" />

必须匹配您传递给findViewById()的确切ID:

TextView textView = (TextView) findViewById(R.id.webContentTV);
String line = "";
while ((line = rd.readLine()) != null) {
    textView.append(line);
} 

目前您的id不匹配:android:id="TextView"findViewById(R.id.TextView1)不符


很抱歉,仍然是同样的问题,我已经更改了名称,但错误仍然存在。 - UKPixie
1
@PiranSmith:你能编辑一下问题,加上新代码吗?并告诉我们新代码中错误在哪里? - Renato Lochetti
我已经在第一篇帖子中添加了代码和错误信息。由于使用移动设备,因此没有使用代码标签进行包装,必须承认我非常需要帮助。感谢任何帮助。 - UKPixie
已经更新了代码,截图显示了一个新的错误!唉。 - UKPixie
这个新问题超出了原始问题的范围,但我也会回答它。您需要将所有三个错误包装在一个try-catch块中,在弹出窗口中单击“快速修复”。不久之后,当您遇到NetworkOnMainThreadException时,请阅读此文章。祝你好运! - Sam

2

我遇到了同样的问题。问题在于我先创建了一个项目,然后没有完成它。所以我又创建了一个第二个项目。Texview变成了Texview2,而editText则变成了editText2。你可能需要将textView更新为textView2。希望这可以帮到你。


1
作为海报问题所述,“TextView”无法解析。问题在于 TextView 应该在哪里或者应该被解析成什么。在这种情况下,它是 android.widget.TextView 类。
AS IDE 对此并不友好,但如果将光标留在类的最左边(实际上是类的左边缘),它会提示您当然的意思...android.widget.TextView...您可以自己输入这个,或者按 (windows) alt+ enter,它会正确地设置整个类引用的值。
当高亮显示不是红色时,您就知道它是正确的引用。
对我来说,我更喜欢写出来。
android.widget.TextView myText = (TextView)findViewById(R.id.myTextViewId); 

我希望你能够理解我的引用内容,同时让其他人也能够理解。

但是,如果你想确保引用与你的期望相符...

点击/键入ctrl +单击短语,例如TextView,它会将您带到确切的Java类... 在这种情况下通过Android SDK。

angroid.widget.TextView.java

package android.widget;  

个人认为这是我不喜欢IDE的一点。更不用说合并冲突了。/抱怨。

希望这能帮助其他人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接