【发布时间】:2015-04-15 22:33:31
【问题描述】:
我有一个带有 ViewPager 的主要 FragmentActivity(InfoInstalacionDetailsCollection 扩展了 FragmentActivity 实现 ViewPager.OnPageChangeListener)。
viewPager在4号Fragment(公共类InfoInstalacionFragment4扩展Fragment)时,ActionBar上会出现一个按钮(R.id.info_instalacion_details_collection_actionbar_menu_btn_buscar)。通过单击按钮,我希望当前 Fragment(编号 4)的 TextView 值发生变化。
我该怎么做?
这是我的代码:
在 InfoInstalacionDetailsCollection 中。 onCreat 方法我声明 ActionBar:
actionBar = new ActionBarImplementation(this, this, R.string.app_name, OPCION_MENU);
然后:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.info_instalacion_details_collection_actionbar_menu, menu);
MenuItem btnVeranoInvierno = menu.findItem(R.id.info_instalacion_details_collection_actionbar_menu_btn_buscar);
btnVeranoInvierno.setVisible(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
if(item.getItemId()== R.id.info_instalacion_details_collection_actionbar_menu_btn_buscar){
Log.d("Page", "InfoInstalacionFragment4. Verano: ");
}
return true;
}
//Menu de ActionBar
public boolean onPrepareOptionsMenu(Menu menu) {
int pageNum = mViewPager.getCurrentItem();
Log.e("Page", "InfoInstalacionDetailsCollection. onPrepareOptionsMenu. pagina actual: "+pageNum);
if(pageNum== 3){
MenuItem btnVeranoInvierno = menu.findItem(R.id.info_instalacion_details_collection_actionbar_menu_btn_buscar).setVisible(true);
btnVeranoInvierno.setVisible(true);
Log.e("Page", "InfoInstalacionDetailsCollection. onPrepareOptionsMenu. pagina actual: "+pageNum);
}else{
menu.findItem(R.id.info_instalacion_details_collection_actionbar_menu_btn_buscar).setVisible(false);
Log.e("Page", "InfoInstalacionDetailsCollection. onPrepareOptionsMenu. pagina actual: "+pageNum);
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int pageNum) {
// TODO Auto-generated method stub
invalidateOptionsMenu();//Llama al metodo del sistema onPrepareOptionsMenu()
}
这是我的代码 InfoInstalacionFragment4(onCreateView 方法)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//Creamos la View
View view = inflater.inflate(R.layout.infoinstalacion_fragment4, container, false);
tv_titulo = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_titulo);
tv_subtitulo = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_subtitulo);
tv_horariosEspeciales = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_horarios_especiales);
tv_diasDeCierre = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_dias_de_cierre);
tv_lunesViernesHora = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_lunes_viernes_hora);
tv_sabadosHora = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_sabados_hora);
tv_domingosHora = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_domingos_hora);
tv_festivosHora = (TextView) view.findViewById(R.id.infoinstalacion_fragment4_tv_festivos_hora);
tv_horariosEspeciales.setOnClickListener(this);
tv_diasDeCierre.setOnClickListener(this);
if(summer){
tv_titulo.setText(R.string.horario_de_verano);
tv_subtitulo.setText(R.string.del_14_de_junio_al_31_de_agosto);
tv_lunesViernesHora.setText(verHorarioLunVie);
tv_sabadosHora.setText(verHorarioSab);
tv_domingosHora.setText(verHorarioDom);
tv_festivosHora.setText(verHorarioFest);
}else{
tv_titulo.setText(R.string.horario_de_invierno);
tv_subtitulo.setText(R.string.del_1_de_septiembre_al_13_de_junio);
tv_lunesViernesHora.setText(invHorarioLunVie);
tv_sabadosHora.setText(invHorarioSab);
tv_domingosHora.setText(invHorarioDom);
tv_festivosHora.setText(invHorarioFest);
}
return view;
}
非常感谢!
【问题讨论】:
标签: android android-fragments android-actionbar android-viewpager