ここではMainActivityのコードである:ここアンドロイド - ViewPager - 第2のタブが変更された更新UI最初のタブに(スワイプ検出)
import android.app.ActionBar;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
@SuppressLint("NewApi")
public class MainActivity extends FragmentActivity implements TabListener {
private ViewPager viewPager;
private TabPagerAdapter tabPagerAdapter;
private ActionBar actionBar;
private String[] tabNames = { "Main", "Settings", "Rules" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
tabPagerAdapter = new TabPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(tabPagerAdapter);
actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 0; i < 3; i++) {
actionBar.addTab(actionBar.newTab().setText(tabNames[i])
.setTabListener(this));
}
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int postion) {
actionBar.setSelectedNavigationItem(postion);
if(postion==1){
View view = viewPager.getChildAt(postion);
set_lang(view);
}
if(postion==0){
View view = viewPager.getChildAt(postion);
set_flag(view);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
public void set_lang(View view){
MainFrame.preferences = getSharedPreferences("flag", Context.MODE_PRIVATE);
MainFrame.editor = MainFrame.preferences.edit();
RadioGroup radio = (RadioGroup)view.findViewById(R.id.radioGroup);
int radioButtonID = radio.getCheckedRadioButtonId();
RadioButton radioBut = (RadioButton)view.findViewById(radioButtonID);
String lang = (String) radioBut.getTag();
MainFrame.editor.putString("lang", lang);
MainFrame.editor.apply();
}
public View set_flag(View view) {
Button btn_flag = (Button)view.findViewById(R.id.btn_flag);
MainFrame.preferences = getSharedPreferences("flag", Context.MODE_PRIVATE);
String lang = MainFrame.preferences.getString("lang","");
if(lang.equals("english")){
btn_flag.setBackgroundResource(R.drawable.eng_flag);
}
if(lang.equals("russian")){
btn_flag.setBackgroundResource(R.drawable.rus_flag);
}
if(lang.equals("german")){
btn_flag.setBackgroundResource(R.drawable.german_flag);
}
return view;
}
}
はTabPageAdapterのコードである:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabPagerAdapter extends FragmentPagerAdapter {
public TabPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return new MainFrame();
case 1:
return new Settings();
case 2:
return new Rules();
default:
break;
}
return null;
}
@Override
public int getCount() {
return 3;
}
}
私が知っています、 onPageSelected(int postion)メソッドを変更してページの変更をキャッチする必要がありますが、動作しません。現在は何も変えていないし、3番目のタブから2番目のアプリに切り替えるとクラッシュする。 わかりやすくするために、ラジオボタン(ラジオグループ)を使用して、ユーザーが第2タブの言語を切り替えると、最初のタブのボタンの背景を変更したいと思います。 スクリーンショットをご覧ください。
本当にあなたの問題が何でありますか?あなたは少し具体的でしょうか? –
はクラッシュログを提供していますか? – rafsanahmad007
ユーザーが第2言語で言語を変更したときに、最初のタブでフラグを変更します。 –