0

Fragmentを拡張するクラス(以下に示す)があります。オブジェクトを作成するときに、クラスがビューを Other クラスに返す必要があります。すべてが正常に機能していますが、バックグラウンド スレッドで処理を行うには、このクラスが必要です。ASYNC タスクも使用しましたが、ASYNC タスクを作成してビューを返すことができませんでした。誰でも助けることができますか?

MapFragment.java

public class MapsFragment extends Fragment 
{  
    MapView map;
    LayoutInflater inflater_;
    ViewGroup container_;
    View layout;

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {  
        inflater_=inflater;
        container_=container;
        super.onCreate(savedInstanceState);
        layout = inflater.inflate(R.layout.fragment_maps, container, false);
        map = (MapView) layout.findViewById(R.id.mapView);
        return (LinearLayout) layout;  
    }
}
4

1 に答える 1

2

View を AsyncTask に渡す理由は特にわかりませんが、これは基本的なアプローチです。

public class MyAsync extends AsyncTask<Void, Void, Void> {
    private View view;

    public MyAsync(View view) {
        this.view = view;
    }

    @Override
    protected Void doInBackground(Void... params) {
        // Do something, but not with view
        return null;
    }

    @Override
    protected void onPostExecute(Void v) {
        // You can alter view here or in the other methods with UI access
        view.setVisibility(View.GONE);
    }
}

このアプローチがやりたいことに当てはまらない場合は、独自のコールバックを使用することもできます。

于 2012-12-07T05:56:56.827 に答える