2014-04-14 31 views
0

我有一個活動和一個實現彈出窗口的類。使用this教程我實現了彈出窗口。我從activity中調用方法init()和popupInit(),其他所有內容都在類中。我的問題是彈出窗口不顯示。從另一個類顯示彈出窗口Android

這裏是彈出類:

public class PopupAudio implements OnClickListener { 

    LinearLayout layoutOfPopup; 
    PopupWindow popupMessage; 
    Button popRecord, popStopRecord, popPlay, popStopPlaying; 
    TextView popupText; 

    public void popupInit() { 
     popRecord.setOnClickListener(this); 
     popStopRecord.setOnClickListener(this); 
     popPlay.setOnClickListener(this); 
     popStopPlaying.setOnClickListener(this); 
     popupMessage = new PopupWindow(layoutOfPopup, LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT); 
     popupMessage.setContentView(layoutOfPopup); 
    } 

    public void init(Context context) { 
     popRecord = new Button(context); 
     popRecord.setId(112); 
     popStopRecord = new Button(context); 
     popPlay = new Button(context); 
     popStopPlaying = new Button(context); 
     layoutOfPopup = new LinearLayout(context); 
     popRecord.setText("REC"); 
     layoutOfPopup.setOrientation(1); 
     layoutOfPopup.addView(popRecord); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch(v.getId()) { 
     case 112: 

      break; 
     } 
    } 

} 

這是學校的項目,所以它是非常重要的。請幫助我,我將不勝感激:)

+1

你打電話給彈出窗口的** [變化](http://developer.android.com/reference/android/widget/PopupWindow.html#showAsDropDown(android.view.View))**。 show()'somwhere – codeMagic

+0

剛要說,你可能會錯過你的'.show()'。 @codeMagic有它 – john

回答

0

你需要調用一個方法來實際上顯示在某些事件動作或任何時候你需要它的彈出。 Here are the different methods from the docs

Here is one example使用showAtLocation()

showAsDropDown(View anchor)可能是最簡單的取決於您的需求。只要傳遞你想要附加的view即可。儘管如此,另外兩個在給出的位置上給你更多的靈活性。

+0

我從活動使用此獲取視圖:this.findViewById(R.layout.activity_note) 而我使用popupMessage.showAsDropDown(錨點);但它會拋出空指針異常 – user3132352

+0

您需要在某處初始化popupwindow。你在你的其他課上做,但不返回視圖,因此它不會在任何地方初始化。在你正在學習的教程中,他們在活動課上做了所有的事情。 – codeMagic