Android应用程序:"应用程序意外停止" - 使用setText()方法

时间:2014-06-27 11:54:56

标签: android eclipse

我的Android应用程序出了问题。如果我对textView使用setText()方法,我遇到的问题是:应用程序意外停止。请再试一次。

申请代码:

public class TC1 extends ActionBarActivity {

private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tc1);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }


    textView = (TextView)findViewById(R.id.textView);
    textView.setText("Hi"); // wrong line
}
...
}

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.example.tc.TC1$PlaceholderFragment" >

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="35dp"
    android:layout_marginTop="20dp"
    android:text="Text" />

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

您的TextView是Fragment xml的一部分,但您尝试从Activity布局中获取它。将findViewById()调用移至片段的onCreateView()方法。

以后的问题: 请不要引用"The Application has stopped unexpectedly"而是检查LogCat输出中的错误消息和堆栈跟踪。您引用的错误消息是用户的默认崩溃信息,没有为我们的开发人员提供任何详细信息。

答案 1 :(得分:0)

将此添加到您的代码

View view = inflater.inflate(R.layout.fragment_blank, R.id.container,false);

并更改

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

到此

textView =(TextView)view.findViewById(R.id.textView);

您的代码目前正在尝试访问不包含textview的主要活动视图。另一个选择是以类似的方式通过你的片段访问它。

答案 2 :(得分:0)

似乎textview属于fragment而非activity_tc1

因此,请在textview布局中使用activity_tc1。或者在textview片段方法中使用onCreateView。其中fragment_tc1将是您的片段名称。

例如

  @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_tc1, container,
                    false);

           TextView  textView = (TextView) rootView.findViewById(R.id.textView);
           textView.setText("Hi"); 
            return rootView;
        }