2010-06-08 8 views
6

pop-up pencere içindeki düğmenin onclick olayı nasıl ele alınır Uygulamamda, başlangıçta ekranda bir düğme var ve düğmenin onclick, bir açılır pencere açılmalıdır. Açılır pencerede, bir görüntü düğmem var ve bu düğmenin onclick, bir etkinlik başlatmak istiyorum. Açılır pencere açılır, ancak açılır pencerenin içindeki görüntü düğmesinin onclick nasıl ele alınacağını anlamıyorum.android

main.xml dosyasında bir düğmem var ve popup_example.xml dosyasında bir imagebutton'um var.

final LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
final Button b=(Button)findViewById(R.id.btn); 
b.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup_example,(ViewGroup)findViewById(R.layout.main))); 
     pw.showAtLocation(v, Gravity.LEFT,0,0); 
     pw.update(8,-70,150,270); 

     //if onclick written here, it gives null pointer exception. 
     ImageButton img=(ImageButton)findViewById(R.id.home); 
     img.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent..... 
      } 
     }); 

     //if onclick is written here it gives runtime exception. 
    }); 

ve ben iki xml düzenleri .........

  1. main.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> 
    
        <ImageButton 
         android:id="@+id/btn" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@drawable/ghj" /> 
    </LinearLayout> 
    
  2. var şu şekildedir:

    Benim Java kodu

    popup_example.xml

    <?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" 
        android:background="#8E2323"> 
    
        <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
         android:orientation="vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:padding="5px"> 
    
         <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          android:orientation="vertical" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:padding="5px" 
          android:background="#000000"> 
    
          <ImageButton android:id="@+id/home" 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:focusable="true" 
           android:src="@drawable/vitalss" 
           android:layout_weight="1" 
           android:background="#8E2323"/>     
         </TableLayout> 
        </TableLayout> 
    </LinearLayout> 
    

cevap

16

Popup görünümüne düğmesini bulmak zorunda: .. xml

<ImageButton 
      android:id="@+id/save_btn" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      **android:onClick="onClick"** 
      android:contentDescription="@string/save" 
      android:src="@drawable/save" /> 
benden wroked

den

View pview = inflater.inflate(R.layout.popup_example,(ViewGroup)findViewById(R.layout.main)); 
PopupWindow pw = new PopupWindow(pview); 
      pw.showAtLocation(v, Gravity.LEFT,0,0); 
      pw.update(8,-70,150,270); 

       //if onclick written here, it gives null pointer exception. 
      ImageButton img=(ImageButton)pview.findViewById(R.id.home); 
      img.setOnClickListener(new OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        Intent..... 
       } 
     }); 
+0

hey çok teşekkürler! Bu çalışıyor. – henna

0

iyi çözüm :) Geçiş onCclickMethod

1

Bu Inflater'de hata vermeyecek ve düzgün çalışacaktır:

LayoutInflater layoutInflater = getLayoutInflater(); 


     View pview = layoutInflater.inflate(R.layout.popup_example, (ViewGroup)findViewById(R.layout.main)); 
     PopupWindow pw = new PopupWindow(pview); 
     pw.showAtLocation(v, Gravity.LEFT,0,0); 
     pw.update(8,-70,150,270); 

      //if onclick written here, it gives null pointer exception. 
     ImageButton img=(ImageButton)pview.findViewById(R.id.home); 
     img.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent..... 
      } 
    });