2015-09-06 82 views
0

每次我嘗試我的android非常簡單的代碼時,出現此問題 不幸的是.apk已停止。Android TextView.setText(「」)停止我的應用程序

當我刪除uid.setText(「txt」)時,應用程序正常運行。

我的活動代碼

  public class MainActivity extends Activity { 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      TextView uid = (TextView)findViewById(R.id.textView1); 
      uid.setText("txt"); 
      setContentView(R.layout.activity_main); 

我的xml文件

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView2" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="71dp"/> 
+1

'''super.onCreate()'後面直接調用'setContentView(R.layout.activity_main)'' – skywall

+1

移動'setContentView(R.layout.activity_main);'在當前Activity的佈局中使用'findViewById'查找任何視圖之前 –

+0

@ρяσѕρєяK那是工作謝謝 – JavaFan

回答

0

在機器人的所有用戶界面被寫入XML。當一個活動開始時,它需要知道顯示給用戶的是哪個UI xml,所以當我們使用佈局文件調用setContentView時,會呈現該特定的xml。 您的應用程序崩潰的原因是因爲您在textview上調用.setText()方法,但android活動無法理解要引用哪個textview。和PS一樣,你可以有多個具有相同ID的UI元素,但是在不同的文件中。

因此,在引用任何UI元素之前,一起調用setContentView()方法。

1

移動的setContentView(R.layout.activity_main);向上。在下面的代碼所示

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TextView uid = (TextView)findViewById(R.id.textView1); 
     uid.setText("txt");