我的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>
答案 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;
}