2013-05-14 218 views
2

我跟着這個人的tutorial如何製作一個ActionBar。比方說,我想改變其中一個片段的TextView。所以我在我的StartActivity.java上添加了onCreate:更改片段內的TextView

TextView textview = (TextView) findViewById(R.id.textView1); 
textview.setText("HI!"); 

當我啓動我的應用程序時,它崩潰了。有人能指出我正確的方向嗎?

我希望有人花時間看這個傢伙的教程,因爲他的佈局與我的佈局基本相同。謝謝。

+2

什麼是崩潰?顯示logcat .. – Renjith 2013-05-14 09:04:12

+0

@Mnemone發佈引發異常的代碼部分。 – TheFlash 2013-05-14 09:07:16

+0

你在哪裏使用setText()... plz指出..在代碼 – Sam 2013-05-14 09:09:30

回答

8

如果你想改變你的組成部分,我建議你做這樣的片段中的方法:

import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.TextView; 

    public class DetailFragment extends Fragment { 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.details, container, false); 
      return view; 
     } 


     public void setText(String text){ 
      TextView textView = (TextView) getView().findViewById(R.id.detailsText); 
      textView.setText(text); 
     } 

    } 
+0

這樣做了;謝謝。 – Mnemone 2013-05-14 09:34:35

+0

getView()始終爲空 – Randy 2015-04-27 14:48:46

+0

如何從'MainActivity'訪問它 – Si8 2016-10-02 18:26:18

2

你能不能嘗試更換getView()與getActivity()?

public void setText(String text){ 
     TextView textView = (TextView) getActivity().findViewById(R.id.detailsText); 
     textView.setText(text); 
    } 
0

我找到了答案here,並Stack overflow

它採用充氣:(對我來說它的工作)


public class MyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View inf = inflater.inflate(R.layout.fragment_place, container, false); 
     TextView tv = (TextView) inf.findViewById(R.id.textview); 
     tv.setText("New text"); 
     return inf; 
    } 
}