ReNa
ReNa

Reputation: 1124

Android TextView and null pointer exception

In my activity I do

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

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

where title is a string

but i get a null pointer exception at second line ie. bTitle.setText(Html.fromHtml(title));

can anyone help???

Activity

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);*/
}

Layout - 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>

Upvotes: 0

Views: 4767

Answers (5)

limitfan
limitfan

Reputation: 924

You should load the correct xml for your layout

setContentView(R.layout.text_view)

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

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

Upvotes: 2

ReNa
ReNa

Reputation: 1124

Thank you all for your help. I have replaced textview with webview as i needed a lot of html formatting in my application and now my text appears in proper format and also my appliction is running fine.

Thanks

Upvotes: 0

rekaszeru
rekaszeru

Reputation: 19220

Make sure, that you actually have the

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

view in your activity's layout xml.

Update
In your listplaceholder.xml there is no such TextView!
If you use the text_view.xml layout as your item renderer, then the code that tries to access the TextView should be placed inside your ListAdapter implementation's getView method!

Upvotes: 1

Niranj Patel
Niranj Patel

Reputation: 33248

i found two issue in your code

1)first thing is your TextView is not in listplaceholder.xml .. so you it will be null pointer...

2)and you need add this code before setContentView();

 Intent myIntent = getIntent(); 
String id = myIntent.getStringExtra("content_id");
String title = myIntent.getStringExtra("title");

and let me know what u want in list and where you call setAdapter for list , where is your adapter...

Upvotes: 1

karni
karni

Reputation: 984

1) Make sure R is imported from your project (and not from android.R namespace) in your import(s) section on the top

2) After the

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

perform a log:

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

and check out from terminal (if you're using Linux, if Windows, just run the logcat)

adb logcat | grep bTitle

This should tell you if you properly got the TextView from your layout (if it is present in the layout, like @rekaszeru mentioned).

3) Make sure the title variable is not null as well

Upvotes: 0

Related Questions