0

既存の機能セットを別のアプリから、新しいアプリ ウィザードにあるアクションバー/スワイプ形式に移植しようとしています。

個々のフラグメント レイアウト (名前以外は同一) があり、すべてのボタンが含まれており、トースト ステートメントを介してすべてが動作 (およびテスト) されています。

私ができないように見えるのは、現在のフラグメントのテキストビューを更新することです。考えられることはすべて試しました。フラグメント トランザクションを実行する必要があるのか​​、それとも何か小さいものを見逃して自分のしっぽを追いかけているのか判断できません。めまいがするので、誰かこのメリーゴーランドを止めてくれませんか?

ここにフラグメントコーディングの一部があります

    public static class DetailFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "section_number";
    LayoutInflater _inflater;
    ViewGroup _container;

    public DetailFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        int position;
        _inflater = inflater;
        _container = container;
        position = getArguments().getInt(ARG_SECTION_NUMBER)-1;

        View rootView;
        TextView dummyTextView;
        // Location Database Handler
        //LocationDatabaseHandler locationDatabaseHandler = new LocationDatabaseHandler(getActivity());

        switch (position){
        case 0:

            rootView = inflater.inflate(R.layout.fragment_main_player,container, false);
            dummyTextView= (TextView) rootView .findViewById(R.id.section_label);
            // Player
            Button btnTruncateDBPlayerTable = (Button) rootView.findViewById(R.id.btnTruncateDBPlayerTable);
            Button btnPlayerCount = (Button) rootView.findViewById(R.id.btnPlayerCount);
            Button btnShowDBPlayerList = (Button) rootView.findViewById(R.id.btnShowDBPlayerList);
            Button btnShowPlayer = (Button) rootView.findViewById(R.id.btnShowPlayer);
            Button btnAddContacts = (Button) rootView.findViewById(R.id.btnAddContacts);
            Button btnAddContact = (Button) rootView.findViewById(R.id.btnAddContact);

            btnTruncateDBPlayerTable.setOnClickListener(new OnClickListener() {
            @Override               
            public void onClick(View v) {
                Activity activity = getActivity();
                //android.app.FragmentManager fm = getActivity().getFragmentManager();

                ////DummySectionFragment currFragment = (DummySectionFragment) fm.findFragmentById(R.id.fragment_main_player);
                //View x =  _inflater.inflate(R.layout.fragment_main_player, _container , false);
                //v = _inflater.inflate(R.layout.fragment_main_player, _container , false);
                //TextView myTextView = (TextView) x .findViewById(R.id.section_label);

                if (activity != null) {

                    Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnTruncateDBPlayerTable button", Toast.LENGTH_LONG).show();
                    DetailFragment updateFragment = dFragmentList.get(0);
                    //updateFragment.recieveUpdate("Holy Crap Batman");
                    //myTextView.append("WHOOT");
                }
            }
            });
            btnPlayerCount.setOnClickListener(new OnClickListener() {
                @Override               
                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnPlayerCount button", Toast.LENGTH_LONG).show();
                    }
                }
                });
            btnShowDBPlayerList.setOnClickListener(new OnClickListener() {
                @Override               
                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnShowDBPlayerList button", Toast.LENGTH_LONG).show();
                    }
                }
                });
            btnShowPlayer.setOnClickListener(new OnClickListener() {
                @Override               
                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnShowPlayer button", Toast.LENGTH_LONG).show();
                    }
                }
                });
            btnAddContacts.setOnClickListener(new OnClickListener() {
                @Override               
                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnAddContacts button", Toast.LENGTH_LONG).show();
                    }
                }
                });
            btnAddContact.setOnClickListener(new OnClickListener() {
                @Override               
                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "toast_you_just_clicked_a_fragment btnAddContact button", Toast.LENGTH_LONG).show();
                    }
                }
                });


            break;
4

1 に答える 1

1

dummyTextViewこれで以前に正常に見つかったと仮定すると、次のrootViewように動作します。

btnTruncateDBPlayerTable.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
    dummyTextView.setText("Whatever");
    // Toast stuff
});

何らかの理由でその TextView を見つけるのを遅らせたい場合は、アクティビティを介して検索できます。

TextView textView = (TextView) getActivity().findViewById(R.id.section_label);
textView.setText("Whatever");

コメントアウトされたコードのように次のようなことをしてもうまくいきません:

// in onClick
View x = _inflater.inflate(R.layout.fragment_main_player, _container , false);
TextView myTextView = (TextView) x.findViewById(R.id.section_label);
myTextView.setText("Whatever");

新しいレイアウトを拡張することで、その一部として新しい TextView を作成しています。その後、その TextView のテキストを検索して設定できますが、実際に表示されるレイアウトには含まれていないため、効果はごくわずかです。

于 2013-11-06T01:11:29.013 に答える