조각 및 tabHost를 사용하고 있으며 모든 것이 잘 작동합니다. 내가 뭘해야이다 : 나는 버튼을 누르면, 그것은 또 다른 조각에 데려다 가지고 있는데 탭의 표시 변경해야합니다 : I 버튼을 누르면버튼을 눌렀을 때 탭의 표시기 변경 (Fragments 및 tabHost)
는 단편 변경을하지만, 탭 표시기는 그렇지 않습니다.
지금은 표시기는 Tab 키를 누를 때만 바뀌지 만 단추를 누를 때도 동일한 효과를 원합니다. 이것이 가능한가?.
CODE :
public class AplicacionActivity extends FragmentActivity {
final public static String tagFragmentClientes = "fragmentClientes";
final public static String tagFragmentSettings = "fragmentSettings";
final public static String tagFragmentLogout = "fragmentLogout";
/*Principal fragments of the tabs*/
ClientesActivity fragmentClientes;
SettingsActivity fragmentSettings;
LogoutActivity fragmentLogout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aplicacion);
fragmentClientes = new ClientesActivity();
fragmentSettings = new SettingsActivity();
fragmentLogout = new LogoutActivity();
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setOnTabChangedListener(listener);
mTabHost.setup();
initializeTab();
}
public void initializeTab() {
Resources res = getResources();
TabHost.TabSpec spec = mTabHost.newTabSpec(tagFragmentClientes);
spec.setContent(new TabHost.TabContentFactory() {
public View createTabContent(String tag) {
return findViewById(android.R.id.tabcontent);
}
});
spec.setIndicator(" Clientes ", res.getDrawable(R.drawable.clientes));
mTabHost.addTab(spec);
spec = mTabHost.newTabSpec(tagFragmentSettings);
spec.setContent(new TabHost.TabContentFactory() {
public View createTabContent(String tag) {
return findViewById(android.R.id.tabcontent);
}
});
spec.setIndicator(" Settings ",res.getDrawable(R.drawable.settings));
mTabHost.addTab(spec);
spec = mTabHost.newTabSpec(tagFragmentLogout);
spec.setContent(new TabHost.TabContentFactory() {
public View createTabContent(String tag) {
return findViewById(android.R.id.tabcontent);
}
});
spec.setIndicator(" Logout ",res.getDrawable(R.drawable.logouticon));
mTabHost.addTab(spec);
}
TabHost.OnTabChangeListener listener = new TabHost.OnTabChangeListener() {
public void onTabChanged(String tabId) {
/*Set current tab..*/
if(tabId.equals(tagFragmentClientes)){
pushFragments(tagFragmentClientes, fragmentClientes, false);
}else if(tabId.equals(tagFragmentSettings)){
pushFragments(tagFragmentSettings, fragmentSettings, false);
}else if(tabId.equals(tagFragmentLogout)){
mostrarAvisoCierreApp();
//nos saque el aviso de nuevo si lo volvemos a presionar.
mTabHost.getCurrentTabView().setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
if (event.getAction() == MotionEvent.ACTION_DOWN){
if (mTabHost.getCurrentTabTag().equals(tagFragmentLogout)){
mostrarAvisoCierreApp();
}
}
return false;
}
});
}
}
};
public void pushFragments(String tag, Fragment fragment, boolean backStack){
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.replace(android.R.id.tabcontent, fragment, tag);
if(backStack){
ft.addToBackStack(null);
}
ft.commit();
}
}
사용자 정의 탭을 사용하거나 라이브러리를 사용하고 있습니까? – TheFlash
Im은 어떤 라이브러리도 사용하지 않고 있습니다. android.widget.TabHost; 도움이된다면 몇 가지 코드를 넣을 것입니다. 잠깐만. – kiduxa
관련 코드를 게시하면 쉽게 도움을받을 수 있습니다. – TheFlash