0

ListFragmentListをリフレッシュしたいですか?したがって、私は私のListFragmentでメソッドを作成しました:Android - 他のアクティビティでAsyncTaskから呼び出されたときに、ListFragmentのコンテキストが動作しない

public void setAdapter(List<String> valueList) { 
    ArrayAdapter adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_list_item_1, valueList); 
    setListAdapter(adapter); 
    adapter.notifyDataSetChanged(); 
} 

をそして、私のActivityに私はonPostExecuteで上記のメソッドを呼び出すAsyncTaskを持っている:

@Override 
    protected void onPostExecute(ArrayList<String> valueList) { 
     OtherClass otherClasst = new OtherClass(); 

     otherclass.setAdapter(valueList); 
    } 

すべてが正常に動作する必要があります。 valueListは空でないか、そのようなものではなく、またonPostExecuteが呼び出されます。

onCreateメソッドのContext ctxを私のListFragmentに初期化すると、私はNullPointerExceptionになります。 メソッドでctx = getActivityで初期化すると、同じエラーが発生します。私ができる唯一のことは、AsyncTaskのクラスのcontextを取得することですが、アプリには何も表示されません。

これをどのように機能させるには?

+0

を呼び出す:

は、このようなFragmentonCreateView方法であってもよく、setAdapter外(それがグローバルに)adapterを初期化しますフラグメントのonViewCreatedメソッド – dex

+2

'OtherClass'とは何ですか、なぜ新しいものを作成していますか? –

+1

ListFragmentの現在のインスタンスを更新する必要があります。あなたのリストフラグメントがOtherClassと呼ばれる場合は、まず上記のsetAdapterメソッドを使って現在のインスタンスを取得し、それを更新する必要があります。 – Neil

答えて

1

あなたがAsyncTaskonPostExecuteからsetAdapterを呼び出しているので、その後、あなたのactivityは破壊されている場合があります、あなたはgetActivityを呼び出してnullコンテキストを取得している理由ですかもしれません。 AsyncTask

adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, valueList); 

そしてonPostExecuteだけvalueListを更新して、アダプタを設定adapter.notifyDataSetChanged()

+0

これは機能しません。何らかの理由でBeacauseを呼び出すと、adapter.notifyDataSetChanged()もnullポインタ例外をスローします。 ListFragmentがメソッドsetAdapterを呼び出すアクティビティの内部にあることに言及する価値はありますか? –

+0

@derkaländerどうやってやっていますか?コードを投稿する –

関連する問題