setText在不同的API版本中的工作方式不同

时间:2014-05-11 14:25:44

标签: android settext

我下载了使用api level 19的最新android SDK。

当我使用setText时,在早期版本的SDK中没有问题,但在最新版本中,我编写了相同的代码但是当我在手机上安装应用程序时,它强制退出。使用setText()时会发生此错误。但是,我使用相同的代码早期版本的SDK,但没有错误。我无法找到问题。请帮忙。

这是我的代码

的活动:

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
        }
        TextView txt = (TextView) findViewById(R.id.textView1);
        txt.setText("Düğme");
    }

fragment_main.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.yeni.MainActivity$PlaceholderFragment" >

 <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="104dp"
    android:layout_marginTop="62dp"
    android:text="TextView" />

2 个答案:

答案 0 :(得分:2)

您的textView1位于片段布局中,而不在活动布局中。在活动视图层次结构上使用onCreate()访问活动findViewById()为时尚早。

findViewById()setText()移至PlaceholderFragment onCreateView(),并在那里充气findViewById()上致电rootView,例如

View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView txt = (TextView) rootView.findViewById(R.id.textView1);
txt.setText("Düğme");

答案 1 :(得分:-1)

试试这个:

检查你的logcat:修复错误然后你应该这样做:

从您的活动中删除Import R,可以在活动文件的顶部找到,然后清理+重建您的解决方案。