0

私はフラグメントが初めてで、これを何日も解決しようとしています。リストビューのクリックでフラグメントを更新しようとしていますが、これと非常によく似ています: フラグメント内のフラグメントは 、左側にリストビューがあり、右側にタブ付きの UI がある場合に更新されません。これが私の断片の1つです:

public static class DescriptionFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {


        View rootView = inflater.inflate(R.layout.fragment_section_description, container, false);

        text = ((TextView) rootView.findViewById(R.id.description));

        text.setText(Html.fromHtml(description_text));


        return rootView;
    }

onCreateView が更新され、textview 'text' が更新されるように、このフラグメントを (メイン アクティビティ内から) どのように呼び出すことができますか? どんな助けでも大歓迎です

注: リストビューはフラグメントではなく、タブレット用の別のレイアウト ファイルです。私の唯一のフラグメント(DescriptionFragmentなど)はタブ用です

4

3 に答える 3

0

リストビューを表示し、リストアイテムをクリックすると、値が更新されるはずです。

onCreateView が更新され、textview 'text' が更新されるように、このフラグメントを (メイン アクティビティ内から) どのように呼び出すことができますか?

メイン アクティビティ内でフラグメントを呼び出すには、次のようにサイド メイン xml ファイルでフラグメントを定義する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/frag_series"
android:layout_width="200dip"
android:layout_height="match_parent"
android:layout_marginTop="?android:attr/actionBarSize"
class="com.example.demo_fragment.MyListFragment" />
</LinearLayout>

代わりに Listframent を拡張し、リストビュー データを埋めるコードは後で以下のようなクリック イベントを発生させます

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
DetailFragment frag = (DetailFragment) getFragmentManager().findFragmentById(R.id.frag_capt);
if (frag != null && frag.isInLayout()) {
frag.setText(getCapt(item));
}
}

次に、以下のように状態を確認して値を更新します。

private String getCapt(String ship) {
if (ship.toLowerCase().contains("android")) {
return "Andy Rubin";
}
if (ship.toLowerCase().contains("IOS")) {
return "Steve Jobs";
}
return "???";
}
于 2013-07-01T05:21:34.683 に答える
0

これは、フラグメントを呼び出す方法です。

DescriptionFragment  descriptionFragment = (DescriptionFragment ) 
getFragmentManager().findFragmentById(R.id.yourFragmentId);
于 2013-07-01T05:21:57.577 に答える
0

Interfaceこのようなリスナーを作成する必要があります

public interface FragmentTransactionListener {
    public void updateFragment(/*some attributes*/);
}

次に、インターフェイスを実装し、メソッドFragmentをオーバーライドする必要がありますupdateFragmentFragmentこのメソッドでは、リスト項目がクリックされたときに実行されるコードを追加できます。このようなもの

public static class DescriptionFragment extends Fragment implements FragmentTransactionListener {

...

    @Override
    public void updateFragment(/*some attributes*/) {
        //do some stuff
    }

...

フラグメントが作成されたらFragmentActivity、このリスナーのインスタンスを取得し、リスト項目がクリックされたときにそれを呼び出します。このコードに似たもの

FragmentTransactionListener listener = instance of your fragment;

//in your list item you then call this
listener.updateFragment(/*some attributes*/);

お役に立てれば

于 2013-07-01T05:23:18.377 に答える