setText()方法的NullPointerException

时间:2011-06-22 09:10:59

标签: android textview nullpointerexception

我有一个奇怪的问题,我不明白......

我想从XML文件中执行PopupWindow:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup" 
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:background="#404040"
android:padding="15px">

<TextView android:id="@+id/popup_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#ffffff" 
    android:textSize="16dip" 
    android:gravity="center_horizontal" />

</LinearLayout>

我只是想做一件简单的事情:在我的TextView中设置文本......这是我的代码:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);     

//UI
ui = new RelativeLayout(this);
ui.setBackgroundColor(Color.LTGRAY);
setContentView(ui);

//PopUp
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popUp = new PopupWindow(this);
popUp.setContentView(inflater.inflate(R.layout.popup_piece, ui, false));


    //Boutton
    bouton = new Button(this);
    bouton.setText("POWPEUP");
    ui.addView(bouton);

    bouton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            popUp.showAtLocation(ui, Gravity.CENTER, 0, 0);
            popUp.update(0, 0, 350, 400);

            titrePopUp = (TextView)findViewById(R.id.popup_title); // THIS RETURNS NULL
            Log.d("TextView", ""+titrePopUp);
                            //titrePopUp.setText("blop", TextView.BufferType.NORMAL); SO THIS DONT WORK
        }
    });
}

说真的,我不明白为什么它会返回NULL值..有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:4)

您正在主布局中搜索TextView,而不是在PopupWindow中搜索。你需要这样做:

titrePopUp = (TextView) popUp.getContentView().findViewById(R.id.popup_titre);

答案 1 :(得分:3)

布局ID拼写为popup_title,代码拼写为popup_titre。也许,这就是问题所在。