NullPointerException:设置TextView值时

时间:2012-02-13 15:11:09

标签: android android-layout android-intent android-emulator

我有一个布局文件(layout/my_test.xml):

<TextView
      android:id="@+id/my_title"
      android:gravity="left|center_vertical"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      />

我的活动:

import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.TextView;

public class MyActivity extends FragmentActivity{

    private View myTestView;    
    private TextView actionBarTitle;

    @Override
    protected void onCreate(Bundle arg0) {
       super.onCreate(arg0);

       myTestView = getLayoutInflater().inflate(R.layout.my_test, null);
       myTitle = (TextView) findViewById(R.id.my_title);

       //NullPointerException here !!
       myTitle.setText(getString(R.string.hello));
    }
}

(我确定问题不在于res/strings.xml,因为“hello”字符串资源已在其他地方使用过,这很好。)

为什么我设置TextView内容后 NullPointerException

完整的错误跟踪:

 Caused by: java.lang.NullPointerException
E/AndroidRuntime(17283):    at com.test.MyActivity.onCreate(MyActivity.java:21)
E/AndroidRuntime(17283):    at com.eficode.card.CardActivity.onCreate(CarActivity.java:29)
E/AndroidRuntime(17283):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(17283):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
E/AndroidRuntime(17283):    ... 11 more

3 个答案:

答案 0 :(得分:4)

创建Textview id,如下所示 myTitle =(TextView)myTestView .findViewById(R.id.my_title);

答案 1 :(得分:0)

你应该正确地写你的onCreate,因为你没有在屏幕上显示任何东西:

@Override
    protected void onCreate(Bundle arg0) {
       super.onCreate(arg0);
       setContentView(R.layout.my_test);

       myTitle = (TextView) findViewById(R.id.my_title);

       myTitle.setText(getString(R.string.hello));
    }

答案 2 :(得分:0)

你只能直接获取setcontentView(R.layout.your_layout_id)中声明的布局视图的id;但是当你夸大一些布局时,你必须在膨胀的视图中获取视图的id,如下所示view_id.find ....();