2

フラグメントアクティビティにViewpagerがあり、テキストの編集と送信ボタンが付いたボタンフレームがあります。フラグメントレイアウトでは、リストビューがあり、フラグメントでそれにアダプターを接続しています。現在、フラグメント内の親から送信ボタンを実装しています。クリックすると、アダプターを介して編集テキスト(再び親から)のテキストをリスト(フラグメント内)に追加しようとしています。ただし、ここでの問題は、テキストを入力して[送信]をクリックすると、ページャーの現在のビューではなく次のビューにテキストが追加され、最後のアイテムに移動すると、同じビューに追加されることがあります(これは予想されます)。次のアイテムの順序ではないランダムな場合もあります。フラグメントアクティビティのレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/detailLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/form" >
    </android.support.v4.view.ViewPager>

    <RelativeLayout
        android:id="@+id/form"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:padding="2dp" >

        <EditText
            android:id="@+id/editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/btnSend"
            android:drawableRight="@drawable/edit_keyboard"
            android:inputType="textMultiLine"
            android:maxLines="3" />

        <ImageButton
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/send" />
    </RelativeLayout>

</RelativeLayout>

フラグメントレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:cacheColorHint="@android:color/transparent"
        android:divider="@android:color/transparent"
        android:listSelector="@android:color/transparent"
        android:scrollbars="none" />

</RelativeLayout>

sendImageButtonを実装する方法は次のとおりです。

ImageButton sendBtn = (ImageButton) getActivity().findViewById(R.id.btnSend);

sendBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String msg = msgBox.getText().toString();
                if (msg.length() > 0) {
                    long date = new Date().getTime();
                    // TODO Auto-generated method stub
                    commentAdapter.add(new OneComment(false, msg, "Me",
                    String.valueOf(date), "0"));

                    msgBox.setText("");
                } else
                    Toast.makeText(getActivity(), "type in some text..", Toast.LENGTH_SHORT).show();
            }
        });
4

1 に答える 1

2

次のようにして、現在のフラグメント(リスト付きのフラグメント)にアクセスできます。

Fragment currentFragment = (Fragment) viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem()); //gets current fragment
//now you have to cast it to your fragment with list, let's say it's name is SukarnoListFragment

((SukarnoListFragment)currentFragment).messageList.add(...); // you have now access to public fields and methods that are inside your fragment

また、アクティビティにボタンがある場合は、フラグメントではなく、アクティビティにこのボタンのonClickを実装する必要があると思います。

于 2013-02-05T06:35:15.790 に答える