2016-06-22 140 views
1

我有按鈕,以進入(負載)這種新的片段加載視圖當片段加載

buttonToFragment1.setOnClickListener(
       new OnClickListener() { 
        @Override 
        public void onClick(View arg0) { 

         // return inflater.inflate(R.layout.fragment_one, container, false); 
         Fragment fr = new FragmentOne(); 
         FragmentManager fm = getFragmentManager(); 
         FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
         fragmentTransaction.replace(R.id.fragment_awal, fr); 
         fragmentTransaction.commit(); 


        } 
       } 
     ); 

當前片段(R.id.fragment_awal)現在替換加載的新片段(R.id.fragment_one),其有佈局(fragment_one.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#00c4ff"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="Ini fragment 1" 
     android:textStyle="bold" /> 

</LinearLayout> 

和類是:

public class FragmentOne extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
     //Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_one, container, false); 
    } 
} 

我的問題是如何加載這個TextView1,這樣我可以做這樣的:

TextView textFragment = (TextView)findViewById(R.id.textView1); 
textFragment.setText(" new text"); 

基本上設置文本爲新加載的片段內部的視圖。

編輯:我可以知道誰回答了這個問題?基本上他確實回答了這個問題,我只是有點困惑。他剛剛刪除了答案。我想接受他的回答。

+0

@JuanCruzSoler,請未刪除你的答案,我想接受它,你是正確的,我只是很困惑的,因爲是在android開發 –

+0

新時OK完成。謝謝 –

回答

-1

您需要充氣的佈局之後,你可以參考TextView

@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
    //Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_one, container, false); 

    TextView textFragment = (TextView) view.findViewById(R.id.textView1); 
    textFragment.setText(" new text"); 

    return view; 
} 
+0

你好,我該如何在按鈕事件中調用這個'TextView'?我的意思是加載這個視圖並設置文本? –

1

Fragments基本上查看包含視圖的層次容器。將片段插入到視圖層次結構中時,它必須有一個活動作爲它的根。在任何給定時間可以存在更多的0個或更多個碎片。

用寬泛的話來說,你用另一個片段(FragmentOne)的視圖替換當前視圖。

要訪問TextView且ID爲textView1,則需要使用片段的當前視圖限定findViewById方法。

更改您的片段代碼:

public class FragmentOne extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { 
     //Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_one, container, false); 

     // The findViewById method returns child views from either a Context, 
     // an Activity or another View itself. 
     TextView textFragment = (TextView) view.findViewById(R.id.textView1); 
     textFragment.setText(" new text"); 

     return view; 
    } 
}