我在我的應用程序中使用了this project自定義彈出窗口(快速操作)。我想在點擊按鈕之後開始活動(在這個彈出窗口中)。這裏是彈出窗口的活動代碼:如何從快速啓動活動?
public class FirstActivity extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView popupButton = (ImageView) this.findViewById(R.id.popup_btn);
popupButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow dw = new PopupWindow(v);
dw.showLikePopDownMenu();
}
});
}
// my stuff
//popup window
private class PopupWindow extends PopupWindowActivity implements OnClickListener {
public PopupWindow(View anchor) {
super(anchor);
}
@Override
protected void onCreate() {
// inflate layout
LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null);
// setup button events
ImageView aboutButton = (ImageView) findViewById(R.id.btn_about);
aboutButton.setOnClickListener(this);
this.setContentView(root);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_about: {
Intent activity = new Intent(FistActivity.this, About.class);
startActivity(activity);
break;
}
}
}}
但是這種從彈出窗口啓動活動的方法不起作用。 下面是代碼的另一個版本(源PopupWindow是私人靜態類):
私有靜態類PopupWindow擴展PopupWindowActivity實現OnClickListener { 公共PopupWindow(查看錨){ 超(錨); }
@Override
protected void onCreate() {
// inflate layout
LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup, null);
// setup button events
ImageView aboutButton = (ImageView) findViewById(R.id.btn_about);
aboutButton.setOnClickListener(this);
this.setContentView(root);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_about: {
Intent intent = new Intent();
intent.setClass(this, About.class);
startActivity(intent);
break;
}
default:
break;
}
}}
日食說,起初我應該從private static class PopupWindow extends PopupWindowActivity implements...
刪除靜態,然後我有以下爲intent.setClass(this, About.class);
:
The method setClass(Context, Class<?>) in the type Intent is not applicable for the arguments (FirstActivity.PopupWindow, Class<About>).
請幫助解決這個問題。
添加日誌。當我按下按鈕,打開彈出式窗口的應用程序強制關閉與以下日誌:
03-09 21:37:18.259: D/AndroidRuntime(9037): Shutting down VM
03-09 21:37:18.259: W/dalvikvm(9037): threadid=1: thread exiting with uncaught exception (group=0x40018578)
03-09 21:37:18.259: E/AndroidRuntime(9037): FATAL EXCEPTION: main
03-09 21:37:18.259: E/AndroidRuntime(9037): java.lang.NullPointerException
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$PopupWindow.onCreate(FirstActivity.java:118)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.PopupWindowActivity.<init>(PopupWindowActivity.java:52)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$PopupWindow.<init>(FirstActivity.java:103)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.example.FirstActivity$1.onClick(FirstActivity.java:32)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.view.View.performClick(View.java:2485)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.view.View$PerformClick.run(View.java:9080)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Handler.handleCallback(Handler.java:587)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Handler.dispatchMessage(Handler.java:92)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.os.Looper.loop(Looper.java:130)
03-09 21:37:18.259: E/AndroidRuntime(9037): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-09 21:37:18.259: E/AndroidRuntime(9037): at java.lang.reflect.Method.invokeNative(Native Method)
03-09 21:37:18.259: E/AndroidRuntime(9037): at java.lang.reflect.Method.invoke(Method.java:507)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
03-09 21:37:18.259: E/AndroidRuntime(9037): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
03-09 21:37:18.259: E/AndroidRuntime(9037): at dalvik.system.NativeStart.main(Native Method)
感謝您的傳遞的上下文的,但在這裏,現在我已經得到了錯誤'likemenuButton.setOnClickListener(新View.OnClickListener(){ \t \t \t @覆蓋 \t \t \t公共無效的onClick(視圖v){ \t \t \t \t PopupWindow DW =新PopupWindow(v); \t \t \t \t dw.showLikePopDownMenu(); \t \t \t}構造函數FirstActivity.PopupWindow(View)未定義 – Sabre 2012-03-08 22:52:32
您需要將上下文傳遞給構造函數。將其更改爲:PopupWindow dw = new PopupWindow(v,this); – dymmeh 2012-03-08 22:53:40
現在我已經有'構造函數FirstActivity.PopupWindow(View,new View.OnClickListener(){})是未定義的' – Sabre 2012-03-08 22:57:23