0
我有以下FragmentActivity
:使用從父FragmentActivity數據製作片段標籤
public class DiagramsActivity extends FragmentActivity implements TabListener, OnPageChangeListener {
private ViewPager viewPager = null;
private FragmentPagerAdapter fragmentPager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.fragmentPager = new DiagramsFragmentPagerAdapter(this.getSupportFragmentManager());
this.setContentView(R.layout.activity_diagrams);
this.viewPager = (ViewPager) this.findViewById(R.id.diagrams_pager);
this.viewPager.setOnPageChangeListener(this);
this.viewPager.setAdapter(this.fragmentPager);
this.actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_line)).setTabListener(this));
this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_bar)).setTabListener(this));
this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_scatter)).setTabListener(this));
this.actionBar.addTab(actionBar.newTab().setText(this.getResources().getString(R.string.text_pie)).setTabListener(this));
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
this.viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) {}
@Override
public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) {}
@Override
public void onPageScrollStateChanged(int state) {}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
this.actionBar.setSelectedNavigationItem(position);
}
}
有了這個佈局:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/diagrams_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:padding="10dip"
tools:context="de.controller.activities.DiagramsActivity" >
</android.support.v4.view.ViewPager>
適配器:
public class DiagramsFragmentPagerAdapter extends FragmentPagerAdapter {
public DiagramsFragmentPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0 : {
return new LineFragment();
}
case 1 : {
return new BarFragment();
}
case 2 : {
return new ScatterFragment();
}
case 3 : {
return new PieFragment();
}
}
return null;
}
@Override
public int getCount() {
return 4;
}
}
我有幾個標籤,例如下面的例子:
public class LineFragment extends Fragment {
private GraphicalView graphicalView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_diagrams_line_fragment, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
if (this.graphicalView == null) {
List<Double> xValues = Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0);
List<Double> yValues = Arrays.asList(30.0, 34.0, 45.0, 57.0, 77.0, 89.0, 100.0, 111.0, 123.0, 145.0);
this.graphicalView = new LineGraph().getLineGraph(this.getActivity().getApplicationContext(), xValues, yValues);
LinearLayout layout = (LinearLayout) this.getActivity().findViewById(R.id.diagrams_line_layout);
layout.addView(this.graphicalView, new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 500));
} else {
this.graphicalView.repaint();
}
}
}
我創建這裏繪製圖中的數據被設定手動onResume()
用於測試的內部。 我想現在要做的是創建/加載我想在我FragmentActivity
代表,我想我所有的標籤從FragmentActivity
使用數據以及當onResume
被稱爲從它來更新數據。爲此,我需要在每個選項卡中啓動用於選擇數據的對話框中的按鈕。
如何創建每個選項卡中來自新數據將數據返回到FragmentActivity
,之後更新所有選項卡的對話框?
我不知道這是否適合我的目的,因爲我需要以某種方式從活動中獲取數據到FragmentPagerAdapter。好吧,我想我會嘗試使用我的活動的意圖。 – Mulgard 2014-11-25 10:27:50