Android view.post()メソッドの使い方
999 ワード
現在のviewがattachedToWindowの後に操作を実行する必要がある場合、viewのpostメソッドを使用します.方法は次のとおりです.
そのrunメソッド呼び出しタイミング:postメソッドは自動的に2つの状況処理に分けられ、ViewがまだattachedToWindowを持っていない場合は、これらのRunnable操作をキャッシュし、attachedToWindowを待ってからメインスレッドで実行する、そうでない場合はmAttachInfoを直接通過する.mHandlerはこれらのRunnable操作をメインスレッドのMessageQueueにpostして実行を待つ.
例えば栗:通常のpopupwindowはactivityのonCreateメソッドでは実行できません.添付のviewがWindowにバインドされている場合(attachedToWindow)に表示されます.そうしないと、次のように表示されます.android.view.WindowManager$BadTokenException: Unable to add window --token null is not valid; is your activity running?
だからそのpostメソッドを使うと、全く問題ありません
他にもpostDelayedも同じです
view.post(new Runnable() {
@Override
public void run() {
}
});
そのrunメソッド呼び出しタイミング:postメソッドは自動的に2つの状況処理に分けられ、ViewがまだattachedToWindowを持っていない場合は、これらのRunnable操作をキャッシュし、attachedToWindowを待ってからメインスレッドで実行する、そうでない場合はmAttachInfoを直接通過する.mHandlerはこれらのRunnable操作をメインスレッドのMessageQueueにpostして実行を待つ.
例えば栗:通常のpopupwindowはactivityのonCreateメソッドでは実行できません.添付のviewがWindowにバインドされている場合(attachedToWindow)に表示されます.そうしないと、次のように表示されます.android.view.WindowManager$BadTokenException: Unable to add window --token null is not valid; is your activity running?
だからそのpostメソッドを使うと、全く問題ありません
View view = find(android.R.id.content);
view.post(new Runnable() {
@Override
public void run() {
// pop
pop.showAtLocation(view, Gravity.CENTER,0,0);
}
});
他にもpostDelayedも同じです