2012-01-10 15 views
3
public void onListItemClick(ListView parent, View v, int position, long id) 
    {   
     super.onListItemClick(parent, v, position, id); 



    LayoutInflater inflater = (LayoutInflater) 
     this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
final PopupWindow pw = new PopupWindow(
     inflater.inflate(R.layout.offer_popup, null, false), 
     500, 
     600, 
     true); 

pw.showAtLocation(this.findViewById(android.R.id.list), Gravity.CENTER, 0, 0);  

ImageView closeimage=(ImageView) findViewById(R.id.imageView2); 
closeimage.setOnClickListener(new OnClickListener() { 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    pw.dismiss(); 
    } 
}); 

offer_popup.xmlは、画像をクリックしてください

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:theme="@android:style/Theme.Dialog" 
android:orientation="vertical" android:weightSum="1"> 
<RelativeLayout android:layout_width="fill_parent" 
android:id="@+id/relativeLayout_popup" 
    android:layout_height="wrap_content" android:layout_weight="0.65"> 
    <ImageView android:layout_width="wrap_content" 
    android:src="@drawable/node_largeview_black" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView1" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
     android:layout_marginTop="61dp"></ImageView> 
    <ImageView android:id="@+id/imageView2" 
    android:layout_height="wrap_content" 
    android:src="@drawable/close_button" 
    android:layout_width="wrap_content" 
    android:layout_alignTop="@+id/imageView1" 
    android:layout_alignRight="@+id/imageView1"></ImageView> 
    </RelativeLayout> 
</LinearLayout> 

は私がリストビューを持っている場合、ポップアップを閉じ、そして私は、アイテム行の1をクリックした場合、ポップアップは、この内、offer_popup.xmlを使用して、作成しますxmlには、closeViewであるimageView2 idがあります。これをクリックすると、ポップアップが閉じられます。

ただし、プログラムがcloseimage = nullをクラッシュしました。

答えて

1
View popView = inflater.inflate(R.layout.offer_popup, null, false); 
final PopupWindow pw = new PopupWindow(popView 
     , 
     500, 
     600, 
     true); 
ImageView closeimage=(ImageView) popView.findViewById(R.id.imageView2); 

変更あなたのコードは、上記に、あなたはそれがメインのレイアウトの一部ではない場合、それを見つけるために、画像の親の参照を与える必要があります。

+0

[OK]を、今、それはしかし、クラッシュしていなかった、私はcloseimageをクリックし、ポップアップのイメージは閉じられませんでした。 – lilzz

1

Viewoffer_popupのxmlファイルを作成し、そのビューの検索のImageViewのを使用して...

View popViewWindow = inflater.inflate(R.layout.offer_popup, null, false); 
ImageView closeimage=(ImageView)popViewWindow.findViewById(R.id.imageView2); 
+0

OK、今はクラッシュしませんでしたが、closeimageをクリックするとポップアップの画像が閉じられませんでした。 – lilzz

1

私はあなたのcloseimageがあなたの活動のビュー階層の一部ではないと思います。 offer_popupビューへの参照を保存し、そこからcloseimageを取得してみてください。

View popupView = inflater.inflate(R.layout.offer_popup, null, false); 
final PopupWindow pw = new PopupWindow(
    popupView, 
    500, 
    600, 
    true); 
ImageView closeimage=(ImageView) popupView.findViewById(R.id.imageView2); 
//... 
+0

OK、今はクラッシュしませんでしたが、closeimageをクリックするとポップアップの画像が閉じられませんでした。 – lilzz

+0

私はあなたのonclickリスナーが呼び出されているかどうかを確認するために、いくつかのログメッセージを入れたり、デバッガでトレースしようとします。そうでない場合は、closeimageのsrcを変更して、それが正しいと思っていること、そして正しい場所をクリックしていることを確認してください。 pwがポップアップを指していて、nullでないか、予期せぬことを確認してください。ポップアップを閉じるときにlogcatを監視し、例外がスローされたかどうかを確認します。これらは頭に浮かぶ最初のアイデアです - あなたの推測はおそらく私のものと同じくらい良いでしょう。がんばろう! – dokkaebi

関連する問題