2

私はまさにこのようにTabActivityを実装します-

http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/

問題は、アクティビティにスピナーが含まれていることです。クリックしてスピナーを展開すると、次の例外が発生します-

android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@43b957c0 is not valid; is your activity running?

誰かが解決策を持っていますか?

4

2 に答える 2

4

エラーはアダプタのコンテキストが原因である可能性があります。これの代わりに、アダプタのコンテキストとしてgetParent()を指定してみてください。

このリンクはあなたを助けます。

于 2011-02-08T06:09:03.437 に答える
4

問題は、「通常の」レイアウトインフレーションを使用すると、インフレーションに使用されるコンテキストが、ネストされたアクティビティである「this」であるということです。残念ながら、タブ内にネストされたアクティビティ(ActivityGroup)を使用してダイアログを表示することはできません(その理由は正確にはわかりませんが、BadTokenExceptionが発生します)。私が最も口に合うと思った解決策は、setContentView(int id)を使用せず、コンテキストとしてgetParent()を使用して明示的なインフレーションを行うことです。このような:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View contentView = LayoutInflater.from(getParent()).inflate(R.layout.my_layout, null);
    setContentView(contentView);
}
于 2011-05-13T14:23:21.357 に答える