Android TextView.setText崩溃

时间:2014-06-25 12:47:23

标签: android crash textview

我试图为我的应用创建一个简单的登录屏幕,并且我已经实现了所有内容,只需要显示TextView中之前活动传递的信息。这是来自活动的onCreate方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_menu);

     /* Get the message from the intent
        Intent intent = getIntent();
        int ID = intent.getIntExtra("USER_ID", -1);
        */


        // Create the text view
        TextView txt = (TextView) findViewById(R.id.txtMenu);
        txt.setText("text"); // + Integer.toString(ID));


}

这里是片段xml的内容:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rma.runner.MenuActivity$PlaceholderFragment" >

<TextView
    android:id="@+id/txtMenu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

但是,当我使用开发人员教程中的代码时,它似乎有效,但我想以图形方式安排所有内容,然后动态更改活动中的文本:

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

// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);

// Set the text view as the activity layout
setContentView(textView);
}

有什么明显的东西我不见了吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

更改此

setContentView(R.layout.activity_menu);

setContentView(R.layout.fragment_main);

答案 1 :(得分:1)

您引用了来自fragment_main.xml的内容,您将获得null,因为在您使用的活动中activity_menu

因此,在txt布局中使用activity_menu或在片段的onCreateView中使用视图

View v = inflater.inflate(R.layout.fragment_main, container, false);

然后使用视图查找textview

TextView txt= (TextView)v.findViewById(R.id.txtMenu);

即。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
          View v = inflater.inflate(R.layout.fragment_main, container, false);
          TextView txt= (TextView)v.findViewById(R.id.txtMenu);
          txt.setText("text"); return v;
    }