2014-06-27 140 views
0

我的Android應用程序出現問題。如果我爲textView使用setText()方法,我有問題:應用程序意外停止。請再試一次。Android應用程序:「應用程序意外停止」 - 使用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

logcat的我的朋友logcat的? – Skynet

+0

你確定@ + id/textView在activity_tc1.xml中嗎? –

+0

是的。我解決了這個問題,感謝我的幫助;) – user3770088

回答

0

你的TextView是片段的XML的一部分,但你嘗試從活動佈局得到它。將findViewById()電話轉到您的Fragment的onCreateView()方法。

對於將來的問題: 請不要引用"The Application has stopped unexpectedly"而是檢查LogCat輸出的錯誤消息和堆棧跟蹤。您引用的錯誤消息是用戶的默認崩潰信息,沒有任何內容爲我們的開發人員提供任何詳細信息。

+0

好吧,我記得。感謝您的幫助。 – user3770088

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。另一種選擇是通過你的片段以類似的方式訪問它。

+0

我無法創建inflater instantion,但我解決了這個問題的其他代碼。感謝幫助。 – user3770088

0

看起來textviewfragment的一部分而不是activity_tc1

因此,要麼使用textviewactivity_tc1佈局。或在onCreateView片段中使用textviewfragment_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; 
     } 
+0

非常感謝你,你的代碼工作:) – user3770088

+0

@ user3770088樂於幫助,如果這個答案幫助你,那麼請接受它,所以它也可以幫助別人,也有類似的問題,無論如何享受編碼。 –