2

ViewPager でアイテムをクリックする方法。クリックした現在のアイテムの位置を返したい。たとえば、次のコードを実行しようとします。

pager.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        Toast toast = Toast.makeText(getApplicationContext(),
            pager.getCurrentItem(), Toast.LENGTH_SHORT);
        toast.show();
        }
    });

しかし、何も起こりませんでした。ViewPager のレイアウトで onClick オプションを既に記述しています。多分誰かが私に言うことができます、私が間違っていることは何ですか?

4

1 に答える 1

3

onclickリスナーをフラグメントに追加しないでください。次に、インテントをブロードキャストします。

public class Your extends  Fragment
{
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle  savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View inflatedView = inflater.inflate(R.layout.customlayout, null);
    inflatedView.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    Intent temp =  new Intent("anything.com.com.CHECK_CURRENT_PAGE_ITEM");
    getActivity().sendBroadcast(temp);
    }
    });
    }
}

次に、メインアクティビティでブロードキャストレシーバーを登録します

public class Youractivity extends FragmentActivity
{

private BroadcastReceiver clickedReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast toast = Toast.makeText(getApplicationContext(),
        pager.getCurrentItem(), Toast.LENGTH_SHORT);
    }
};

@Override
public void onCreate()
{
...
   registerBroadcstReceiver(clickedReceiver, new IntentFilter("anything.com.com.CHECK_CURRENT_PAGE_ITEM"))

...
}
@Override
public void onDestroy()
{
unregisterBroadcastReceiver()
}
}
于 2013-10-24T09:13:54.660 に答える