13

ビューが完全にレンダリングされた後にコールバックを作成するにはどうすればよいですか?

親ビューのスクリーンショットを撮るメソッドを呼び出そうとしています。そのコードをonCreate()メソッドで記述すると、nullポインターが原因でアプリがクラッシュします(ビューがレンダリングされないため)。今のところ、私が実装した一時的な解決策は、そのメソッドを呼び出す前に1秒の遅延を作成することです。しかし、私はこの問題に対するはるかに堅牢な解決策を探しています。

任意の提案と感謝の意を表します。ありがとう :)

4

3 に答える 3

16

このロジックを試してください...ビューがフォーカスを取得した後、レンダリングされた後、またはフォーカスを失った後に常に呼び出されます

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    doWhateverAfterScreenViewIsRendered();
}
于 2012-07-09T12:31:21.437 に答える
1

私は今より良いオプションを持っています:)これはレイアウトがレンダリングされた後に本当にコールバックを与えます

private class LoadActivity extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mainMethod();
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        takeScreenShot(1);
    }

    @Override
    protected String doInBackground(String... params) {
        return null;
    };
}

上記のクラスを作成し、onCreate()で実行するためにこのメソッドを呼び出しました

LoadActivity loadactivity= new LoadActivity();
loadactivity.execute();
于 2012-07-12T07:59:44.607 に答える
0

onResume()でコールバックを使用する必要がありActivityます。

アクティビティがユーザーとの対話を開始するときに呼び出されます。この時点で、アクティビティはアクティビティスタックの最上位にあり、ユーザー入力がそこに送られます。

于 2012-07-09T11:28:27.900 に答える