4

XML ファイル内の TextView と同じ面にある ListFragment から textview を更新する必要があります。しかし、どちらの試行も null を返すだけです。

@Override
public void onCreate(Bundle ice)
{
    super.onCreate(ice);

    ...

    mAdapter = new SimpleCursorAdapter(getActivity(), R.layout.entry_row, null, from, to, 0);
    setListAdapter(mAdapter);

    mTextView = (TextView) getActivity().findViewById(R.id.tv); // try #1

    mPercentView = (TextView) ((ViewGroup)getView().getParent()).findViewById(R.id.tv); //try #2
    // (not tested at the same time)
}

これは XML です。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >


<TextView
    android:id="@+id/info_log_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:padding="@dimen/object_padding"
    android:textSize="24sp"
    android:textIsSelectable="true" />

<fragment
    android:id="@+id/view_log_fragment"
    android:name="fragment name..."
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:layout_below="@+id/info_log_view" />

</RelativeLayout>

ありがとう!

4

4 に答える 4

5

これは私の問題を解決しました。それがあなたにも役立つことを願っています: クラス onActivityCreated をオーバーライドし、その中に以下のコードを記述します:

View myActivityView=(RelativeLayout)getActivity().findViewById(R.id.parentContainer);

RelativeLayout は、Textview を含むメインのレイアウトであることに注意してください。フラグメントにこれがある場合、フラグメントの親ビューにアクセスでき、次のコードでテキスト ビューを取得するだけで済みます。

TextView myTextView=(TextView)myActivityView.findViewById(R.id.myTextView);

この助けを願っています。

于 2015-01-13T14:24:42.720 に答える
1

私は同様の問題を抱えています.Fragment JavaファイルでgetRootView()onを使用して解決策を見つけましたonCreateView()

 =(thecasting)view.getRootView().findViewById(R.id.theid)
于 2015-04-24T16:27:04.933 に答える
0

これを試して

 mPercentView = (TextView) ((ViewGroup)getActivity().getParent()).findViewById(R.id.tv); 

また

  mPercentView = (TextView)getView().getParent().findViewById(R.id.tv); 
于 2013-05-15T10:46:44.200 に答える