2013-10-04 50 views
0

內部的視圖我有它實現OnTabChangeListener並且充當用於其它片段類宿主fragmentActivity類。每個片段類都在不同的XML佈局文件中爲其自己的佈局定義。獲得從片段類FragmentActivity類

我想從fragmentActivity類內部的片段類視圖。

我曾嘗試:

View view = myFragment.getView(); 
Button myButton = (Button) view.findViewById(R.id.my_button); 
myButton.setOnClickListener(new MyClickListener()); 

但似乎並沒有工作。

因此,沒有人知道嗎?

+0

「我想要得到的fragmentActivity類中從片段類視圖」爲什麼呢?你想把某些東西傳回給片段中的活動? – Raghunandan

+0

是我做的,因爲我需要從片段類獲得數據之後,我想確認數據後,創建一個新的標籤。 –

+2

使用界面與活動進行交流。 http://developer.android.com/guide/components/fragments.html。檢查主題**與活動溝通** – Raghunandan

回答

-1

如果你想進入您的組件,並設置了一些數據,我建議你做這樣的片段中的方法:

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.Button; 

    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 setSettings(){ 
      Button button = (Button) getView().findViewById(R.id.my_button); 
      button.setOnClickListener(new MyClickListener()); 
     } 

    } 
+1

添加你來自哪裏,這個複製的鏈接,並會撤消我-1(提示:http://stackoverflow.com/a/17023533/281545) –

2

如果你願意,你可以使用BroadcastReciver將事件通知發送到您的來自你的片段的活動。

要註冊一個廣播reciver在FragmentActivity做這樣的事情:

public class MyActivity extends FragmentActivity { 

    private BroadcastReceiver myBroadcastReceiver = 
     new BroadcastReceiver() { 
      @Override 
      public void onReceive(...) { 
       //YOU WILL RECEIVE YOUR BROADCAST HERE. WRITE YOUR CODE HERE TO ADD NEW TAB 
      } 
     }); 

    ... 

    public void onResume() { 
     super.onResume(); 
     .... 
     registerReceiver(myBroadcastReceiver, intentFilter); 
    } 

    public void onPause() { 
     super.onPause(); 
     ... 
     unregisterReceiver(myBroadcastReceiver); 
    } 
    ... 
} 

我們瞭解您的片段發送廣播這樣做:

Intent intent=new Intent(); 
intent.setAction("ANY_UNIQUE_NAME"); 
intent.putExtra("data",EXTRA_DATA_IF_YOU_WANT); 
sendBroadcast(intent); 

您將收到您的活動的這個廣播在接收事件。做任何你想做的事。