Android TextView和空指针异常

时间:2011-05-02 11:04:48

标签: android textview

在我的活动中我做了

TextView bTitle = (TextView)findViewById(R.id.TextView);

bTitle.setText(Html.fromHtml(title));

其中title是一个字符串

但我在第二行得到一个空指针异常即。的 bTitle.setText(Html.fromHtml(标题));

任何人都可以帮忙???

活动

public class NewsDetails extends ListActivity{

public static final String LOG_TAG = "Infra";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listplaceholder);
    super.onStart();
    Intent myIntent = getIntent(); 
    String id = myIntent.getStringExtra("content_id");
    String title = myIntent.getStringExtra("title");
    //Spanned newTitle = Html.fromHtml(title);
    //tv.setText(Html.fromHtml(title));
    TextView bTitle = (TextView)findViewById(R.id.TextView);
    Log.d(LOG_TAG, "What is the value: " + bTitle);
    bTitle.setText(Html.fromHtml(title));

    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();


    String xml = XMLfunctions.getBodyXML(id);
    String result = xml.replaceAll("<p>", "<p><div align=\"justify\">");
    String nXml = result.replaceAll("</p>", "</div></p>");
    TextView body = (TextView)findViewById(R.id.TextView1);
    body.setText(Html.fromHtml(nXml));


    //Spanned body = Html.fromHtml(nXml);
    /*HashMap<String, String> map = new HashMap<String, String>();  
    map.put("title", tv.toString());
    map.put("news", tv1.toString());
    mylist.add(map);*/

    /*ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.list_item, new String[] { "title", "news" }, new int[] { R.id.item_title, R.id.item_subtitle });

    setListAdapter(adapter);

    final ListView lv = getListView();
    lv.setTextFilterEnabled(true);*/
}

布局 - listplaceholder.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">    

    <ListView
    android:id="@id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:drawSelectorOnTop="false" />

    <TextView
        android:id="@id/android:empty"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="No data"
        android:focusable="false"
        android:clickable="true"/>

</LinearLayout>

text_view.xml

<LinearLayout android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView 
        android:id="@+id/TextView"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:textSize="16px"
        android:textStyle="bold">
    </TextView>
    <TextView 
        android:id="@+id/TextView1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:textSize="16px"
        android:textStyle="bold">
    </TextView>

</LinearLayout>

5 个答案:

答案 0 :(得分:2)

您应该为您的布局加载正确的xml

setContentView(R.layout.text_view)

TextView bTitle = (TextView)findViewById(R.id.TextView);

bTitle.setText(Html.fromHtml(title));

答案 1 :(得分:1)

确保您确实拥有

<TextView android:id="@+id/TextView [...] 

在您的活动布局xml中查看。

<强>更新
listplaceholder.xml中,没有TextView
如果您使用text_view.xml布局作为项呈示器,则尝试访问TextView的代码应放在ListAdapter实现的getView方法中!

答案 2 :(得分:1)

我在您的代码中发现了两个问题

1)首先,你的TextView不在listplaceholder.xml中。   所以你将它是空指针...

2)并且您需要在setContentView();

之前添加此代码
 Intent myIntent = getIntent(); 
String id = myIntent.getStringExtra("content_id");
String title = myIntent.getStringExtra("title");

让我知道你想要的列表以及你在哪里调用setAdapter列表,你的适配器在哪里......

答案 3 :(得分:0)

1)确保在您的项目中导入R(而不是从顶部的导入部分导入android.R命名空间)

2)

之后
TextView bTitle = (TextView)findViewById(R.id.TextView);

执行日志:

Log.d("debug", "bTitle: " + (bTitle != null));

从终端退房(如果您使用的是Linux,如果是Windows,只需运行logcat)

adb logcat | grep bTitle

这应该告诉您是否从布局中正确获取了TextView(如果它存在于布局中,如@rekaszeru提到的那样)。

3)确保title变量也不为空

答案 4 :(得分:0)

谢谢大家的帮助。我已经用webview替换了textview,因为我在我的应用程序中需要大量的html格式,现在我的文本以正确的格式显示,而且我的应用程序运行正常。

由于