2012-03-06 7 views
0

は、私は、オブジェクト「」Android:ポップアップウィンドウから、ポップアップウィンドウを開始したオブジェクトのメソッドを呼び出すにはどうすればよいですか?

「A」は、ポップアップウィンドウウインドウがその中にボタンがあるポップアップ

の表示を開始しています。

"A"のメソッドへの呼び出しを開始するには、ポップアップウィンドウのそのボタンを使用します。 「RIGHT HERE //私は内のメソッド呼び出したい 『

一般

を』このポップアップが宣言された」Aを:

私は以下のコードの行からの通話を開始したいと言いますどのように私はそのポップアップウィンドウからポップアップウィンドウを宣言するオブジェクトのメソッドを呼び出すことができますか?これは簡単だと思われるが、私はこのOOのものですっごい初心者だ。

この説明が混乱している場合は、私は飾ることができます。他の誰かからコピー

public EventsOverlay A = new EventsOverlay(a, b)) 
class EventsOverlay extends ItemizedOverlay<OverlayItem> { 

      private PrePopupPanel panel=new PrePopupPanel(R.layout.preview1); 
       @Override 
     protected boolean onTap(int index) { 


       panel.show(true); 
      return true; 
     } 

... 

} EventsOverlyクラスを終了

class PrePopupPanel { 
      View popup; 
      boolean isVisible=false; 

      PrePopupPanel(int layout) { 
       ViewGroup parent=(ViewGroup)mapView.getParent(); 

       popup=getLayoutInflater().inflate(layout, parent, false); 
       popup.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        hide(); 
       } 
       }); 

      ImageButton infobtn = (ImageButton)popup.findViewById(R.id.button1); 
       infobtn.setOnClickListener(new OnClickListener() 
       { 
        public void onClick(View v) 
        { 
         hide(); 

// RIGHT HERE I WANT TO CALL A METHOD IN "A" from which this popup was declared 


        } 
      }); 

...ショーのような他の方法()、非表示()など...

答えて

0

使用Android Dialog methods.

onCreateDialogでは、カスタムオブジェクトへの参照を渡し、ユーザーがボタンをクリックしたときに必要なメソッドをトリガーすることができます。その後、アクティビティコードの任意の場所に電話showDialog()

1

これを行うにはインターフェイスを使用します。

- クラスAは、インタフェース

を実装する必要があります - PrePopupPanelにこれを渡します。

- インターフェイスオブジェクトを介してメソッドを呼び出します。

インターフェイス package com.demo.interface;

public interface ICallHandler { 

public void show(String show); 

} 

クラス

class EventsOverlay extends ItemizedOverlay<OverlayItem> implements ICallHandler{ 

     private PrePopupPanel panel=new PrePopupPanel(R.layout.preview1,this); 
      @Override 
    protected boolean onTap(int index) { 


      panel.show(true); 
     return true; 
    } 

PrePopupPanel

Class PrePopupPanel { 
     View popup; 
     boolean isVisible=false; 
     ICallHandler mHandler; 
     PrePopupPanel(int layout, ICallHandler callHandler) { 
      mHandler = callHandler; 
      ViewGroup parent=(ViewGroup)mapView.getParent(); 

      popup=getLayoutInflater().inflate(layout, parent, false); 
      popup.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       hide(); 
      } 
      }); 

     ImageButton infobtn = (ImageButton)popup.findViewById(R.id.button1); 
      infobtn.setOnClickListener(new OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        hide(); 

// RIGHT HERE I WANT TO CALL A METHOD IN "A" from which this popup was declared 
        mHandler.show(); 

       } 
     }); 
+0

ありがとうございます。私は本当にこれが私が求めていた答えだと確信していますが、私はまだそれの周りに私の頭を包んでしようとしています(これでは新しい)。私は公開のインターフェイスで読んでいます。その間、私はPrePopupPanelのmCallHandler mCallHandler mHandlerという行からどこのmCallHandlerですか?定義されているものとは何ですか? Eclipseは私にそれを公開インターフェースとして定義するチャンスを提供しますが、私は混乱しています。それにかかわらず、オブジェクト間の通信に関するこの重要な洞察に感謝します。 – Ray

+0

あなたの指示に従い、ICallHandlerをmCallHandlerに変更し、それが動作する残りの部分すべてを差し込みます!私はこの質問が答えなしでいくつかの場所に尋ねられたのを見たので、ここでそれは人々です。今私は完全に理解するまでこれを勉強する必要があります! – Ray

+0

申し訳ありません..それはICallHandler mHandlerです。変更されました:) :)ありがとうございました:) – user936414

1

あなたのクラスは、他の1の内部にある、あなたはあなたの親のすべてのメンバーメソッドにアクセスすることができます。

+0

申し訳ありません。私のせいです...コードスニペットを表示する方法は、他のクラスの中に1つのクラスを表示しました。プリプロプパパネルは、イベントオーバーレイの内部にはありません。私はコードが表示される方法でそれを修正しようとしました。 – Ray

+0

USER 936414あなたに適したソリューションをお持ちですか? –

関連する問題