如何在我的主窗口中显示弹出窗口?

问题描述:

嗨,朋友,我下载一个弹出窗口示例源代码...其工作正常...当我运行这个应用程序模拟器屏幕显示一个按钮,如果我点击该按钮弹出窗口显示在bottom.if我再次点击相同的按钮其关闭弹出窗口...但是,如何在我的主窗口中显示弹出窗口?

我希望当我的应用程序打开我需要静态弹出窗口,不需要此按钮。然后我点击软键板(电脑键盘)F2键,在弹出的窗口,我要辞退......这就是全部,如果有谁知道,请帮助我......

这是我的源代码:

package popupTest.popupTest; 

import android.R.layout; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.PopupWindow; 
import android.widget.TextView; 

public class popupTest extends Activity { 

PopupWindow popUp; 
LinearLayout layout; 
TextView tv; 
LayoutParams params; 
LinearLayout mainLayout; 
Button but; 
boolean click = true; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    popUp = new PopupWindow(this); 
    layout = new LinearLayout(this); 
    mainLayout = new LinearLayout(this); 
    tv = new TextView(this); 
    but = new Button(this); 
    but.setText("Click Me"); 
    but.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
    if (click) { 
    popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); 
    popUp.update(50, 50, 300, 80); 
    click = false; 
    } else { 
    popUp.dismiss(); 
    click = true; 
    } 
    } 

    }); 
    params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
    LayoutParams.WRAP_CONTENT); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    tv.setText("Hi this is a sample text for popup window"); 
    layout.addView(tv, params); 
    popUp.setContentView(layout); 
    // popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); 
    mainLayout.addView(but, params); 
    setContentView(mainLayout); 
} 
} 

logcat的错误:

08-23 16:38:23.771: ERROR/AndroidRuntime(433): FATAL EXCEPTION: main 
08-23 16:38:23.771: ERROR/AndroidRuntime(433): java.lang.RuntimeException: Unable to start activity ComponentInfo{popupTest.popupTest/popupTest.popupTest.popupTest}: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.os.Looper.loop(Looper.java:123) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at dalvik.system.NativeStart.main(Native Method) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.view.ViewRoot.setView(ViewRoot.java:505) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.view.Window$LocalWindowManager.addView(Window.java:424) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.widget.PopupWindow.invokePopup(PopupWindow.java:828) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.widget.PopupWindow.showAtLocation(PopupWindow.java:688) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at popupTest.popupTest.popupTest.onCreate(popupTest.java:49) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
08-23 16:38:23.771: ERROR/AndroidRuntime(433):  ... 11 more 
08-23 16:38:23.820: WARN/ActivityManager(59): Force finishing activity popupTest.popupTest/.popupTest 

把代码之外onClickonCreate ....并使用setOnclickListener删除UR弹出..

+0

对不起,我是新的Android应用程序给我你的答案编辑请...... – ganesh

+0

请帮我.... – ganesh

+0

如果我在主窗口中运行它的显示按钮,但我需要弹出窗口...然后我点击软键盘我想解雇.....这就是所有...... – ganesh

我拥有电子dited你的代码,它会显示弹出式菜单上的活动开始:

package popupTest.popupTest; 

import android.R.layout; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.PopupWindow; 
import android.widget.TextView; 

public class popupTest extends Activity { 

PopupWindow popUp; 
LinearLayout layout; 
TextView tv; 
LayoutParams params; 
LinearLayout mainLayout; 
Button but; 
boolean click = true; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    popUp = new PopupWindow(this); 
    layout = new LinearLayout(this); 
    mainLayout = new LinearLayout(this); 
    tv = new TextView(this); 
    but = new Button(this); 
    but.setText("Click Me"); 



    params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
    LayoutParams.WRAP_CONTENT); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    tv.setText("Hi this is a sample text for popup window"); 
    layout.addView(tv, params); 
    popUp.setContentView(layout); 
    // popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); 
    mainLayout.addView(but, params); 
    setContentView(mainLayout); 

    Handler handler = new Handler(); 
     handler.postDelayed(new Runnable(){ 

     public void run() { 
      // TODO Auto-generated method stub 
      popUp.showAtLocation(layout, Gravity.BOTTOM, 10, 10); 
      popUp.update(50, 50, 300, 80); 
     } 

     }, 1000); 
    //Use this to dismiss as per your need... 
    // popUp.dismiss(); 

} 
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     popUp.dismiss(); 
     return false; 

    } 
} 
+0

好吧,现在我使用此代码,其显示只有按钮.... – ganesh

+0

我需要弹出窗口.....后可点击操作我需要.... – ganesh

+0

请现在尝试上面的代码。 ... –