2012-01-10 8 views
0
public class Offer_Popup extends Activity { 


public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.offer_popup); 

     //newly added code, the window popup 
    LayoutInflater inflater = (LayoutInflater) 
        this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     PopupWindow pw = new PopupWindow(
        inflater.inflate(R.layout.popup_example, null, false), 
        100, 
        100, 
        true); 

    pw.showAtLocation(this.findViewById(R.id.relativeLayout_popup), Gravity.CENTER, 0, 0);}  
      ///////////////////// 

popup_example.xmlデバッグ次のAndroidのコード、ポップアップウィンドウ

 <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:padding="10dip" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dip" 
    android:text="Test Pop-Up" 
    /> 

</LinearLayout> 

DDMSはshowAtLocationが誤りである最後の行を示しています。
ウィンドウを追加できません - トークンnullが無効です。 android.view.WindowManagerBadToken。 ポップアップを追加する前に、プログラムはうまく動作します。しかし、ポップアップコードの後、クラッシュしました。それについて話している悪いトークンは何ですか?

答えて

1

ポップアップウィンドウには、最初のウィンドウがポップアップできる必要があります。アクティビティには自動的にウィンドウがあると考えられますが、これは最初から当てはまるわけではありません。指定されたアクティビティにはonAttachedToWindow()までアクティブなウィンドウがありません。現時点では、Windowが存在するためにPopupWindowをWindowに追加することができます。

コードをonAttachedToWindow()に移動すると、意図したとおりに動作するか、少なくとも別のエラーが発生します。このことができます

希望、

FuzzicalLogic

0

"popup_example"が存在し、レイアウトファイルに正しく定義されていますか?

ファイルを再確認してください。そしてそれを "膨張"させた後、pwの値を再確認してください。

+0

PWが膨張した後に有効になり、ID = 83xxxxxxxx mWindowManagerは、有効なID = 83xxxxxxxです。 – lilzz

関連する問題