我有一个布局文件(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
答案 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 ....();