私はかなり新しいAndroid programming
ので、簡単に行ってください。:-)
ユーザーがアイテムをクリックすると、そのアイテムの詳細が表示された画面に移動します。ユーザーは左右にスワイプして、リストの他のアイテムの詳細を表示できます。
共有、フォント サイズの拡大などの ActionBar アイコンがいくつかあります
。 item2 の代わりに共有されます。フォントを増減しても同じことが起こります。item2 を選択した場合、item3 にスワイプしてフォント サイズを大きくすると、item3 ではなく item2 のフォント サイズが大きくなります。
SimpleOnPageChangeListener を使用するなど、多くのことを試しましたが、使用できません。正しく実装する方法がわかりません。
これが私のコードです:
リストビューを含む主なアクティビティ:
public class Main extends SherlockListActivity implements OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView mylist = (ListView) findViewById(android.R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_list_reda_1, R.id.list_content, getResources().getStringArray(R.array.items_list_array) );
mylist.setAdapter(adapter);
mylist.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3)
{
Intent n = null;
switch (position){
case 0:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
n.putExtra("POSITION_KEY", position);
break;
case 1:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
n.putExtra("POSITION_KEY", position);
break;
case 2:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
n.putExtra("POSITION_KEY", position);
break;
case 3:
n = new Intent(getApplicationContext(), ViewPagerClass.class);
n.putExtra("POSITION_KEY", position);
break;
}
if(null!=n)
startActivity(n);
}
});
}
}
ViewPagerClass:
public class ViewPagerClass extends SherlockFragmentActivity{
static final int NUM_ITEMS = 4;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.viewpager_layout);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
//mPager.setCurrentItem(2);
final ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);
ab.setDisplayUseLogoEnabled(false);
ab.setDisplayShowHomeEnabled(false);
}
public boolean onCreateOptionsMenu(Menu menu) {
mainMenu = menu;
subMenu1 = menu.addSubMenu(0, 1, 7, "");
subMenu2 = menu.addSubMenu(0, 2, 6, "");
subMenu3 = menu.addSubMenu(0, 3, 5, "");
//some code here...
MenuItem share = menu.findItem(R.id.menu_share);
ShareActionProvider provider = (ShareActionProvider) share.getActionProvider();
provider.setShareHistoryFileName(null);
provider.setShareIntent(createShareIntent());
getSupportMenuInflater().inflate(R.menu.textsize_subm, subMenu3);
MenuItem subMenu3Item = subMenu3.getItem();
subMenu3Item.setIcon(R.drawable.ic_font_size);
subMenu3Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
private Intent createShareIntent() {
TextView tv = (TextView) findViewById(R.id.textView1);
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, tv.getText());
shareIntent.setType("text/plain");
return shareIntent;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
//some code here...
default:
return super.onOptionsItemSelected(item);
}
}
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0: return FirstPageFragment.newInstance();
case 1: return SecondPageFragment.newInstance();
case 2: return ThirdPageFragment.newInstance();
case 3: return FourthPageFragment.newInstance();
}
return null;
}
}
public static class FirstPageFragment extends Fragment {
public static FirstPageFragment newInstance() {
FirstPageFragment f = new FirstPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment1, container, false);
return V;
}
}
public static class SecondPageFragment extends Fragment {
public static SecondPageFragment newInstance() {
SecondPageFragment f = new SecondPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment2, container, false);
return V;
}
}
public static class ThirdPageFragment extends Fragment {
public static ThirdPageFragment newInstance() {
ThirdPageFragment f = new ThirdPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment3, container, false);
return V;
}
}
public static class FourthPageFragment extends Fragment {
public static FourthPageFragment newInstance() {
FourthPageFragment f = new FourthPageFragment();
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.fragment4, container, false);
return V;
}
}
つまり、メニュー/アクションバーのアイコンは、スワイプ後に現在のページに応答するように更新されません。私の質問が明確であることを願っています。