2012-09-13 156 views
0

我想弄清楚片段是如何工作的。 我有3個類,MainActivity,Fragment1和Fragment2。SherlcokFargments按鈕在一個片段中調用第二個片段

MainActivity擴展SherlockFragmentActivity 和

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Fragment1 firstFragment = new Fragment1(); 
    firstFragment.setArguments(getIntent().getExtras()); 
    getSupportFragmentManager().beginTransaction() 
       .add(R.id.fragment_container1, firstFragment).commit(); 

現在,我加載片段1到我fragment_container,並顯示不錯。

(所以main_activity.xml只有一個)

好,片段1延伸SherlockFragment,什麼也不做更多的則

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    return inflater.inflate(R.layout.fragment1layout, container, false); 

所以,我只是從我的.xml有一個文本視圖和一個它充氣按鈕。

在世界的哪個地方現在我可以實例Button,並給他代碼用Fragment2替換Fragment1?

這是什麼代碼,因爲我現在「在Fragment1」,所以我需要以某種方式與片段持有人溝通,並告訴它「用Fragment2取代我」。

Fragment2也延伸SherlockFragment,和什麼也不做,膨脹是空的.xml

回答

1

你要打電話從片段1的fragment2像下面

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment1layout, container, false); 
      Button button = (Button)view.findViewById(R.id.yourButton); 
      button.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        //Replace your fragment 

       } 
      }); 
     return view; 
} 
+0

你是保佑:)我嘗試沒有view.findViewBy ...然後它不起作用。謝謝!這有助於理解至少一點,但我需要的是同一個「視圖」上的2個片段。 – Balkyto

0

我現在是「在片段1」,因此我需要以某種方式與Fragment持有人溝通,並告訴它「用Fragment2取代我」。

如果你想更換片段1,當你在按鈕,這是成片段1點擊Fragment2:像它描述here

(最佳實踐)

  1. 你應該建立從片段1回調至MainActivity
  2. 插入MainActivity放置邏輯,它將fragment1替換爲fragment2。

(不好的做法)

  1. 創建方法爲MainActivity將替換一個片段到另一個例如changeFirstFragmentToAnother()
  2. 那麼當你需要改變片段1至fragment2可以手動調用這個方法( from fragment1)like this:

    ((MainActivity)getActivity()).changeFirstFragmentToAnother();

相關問題