2011-08-23 4 views
0

안녕하세요 친구 한 팝업 창이 샘플 소스 코드를 다운로드 ... 그 작동 좋아요 ...이 응용 프로그램 에뮬레이터 화면을 실행하면 하나의 버튼을, 그 버튼을 클릭하면 팝업 창이 bottom.if에 표시된 동일한 버튼을 다시 클릭하십시오 팝업 창을 닫습니다 ...하지만,내 메인 윈도우에서 팝업 창을 표시하는 방법은 무엇입니까?

내 응용 프로그램을 열 때 정적 팝업 창이 필요하면이 버튼이 필요하지 않습니다.

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); 
} 
} 
: 그럼 난 ...... 사람이 저를 도와주세요 아는 경우 이잖아

을 소프트 키 보드 (컴퓨터 키보드) F2 버튼, 내가 ... 기각 할 팝업 창을이 내 소스 코드 클릭

로그 캣 오류 :

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 

답변

0

+0

미안 내가 안드로이드 응용 프로그램에 새로운 오전 – ganesh

+0

저를 도와주세요 ...... 저에게 당신의 편집 대답을하시기 바랍니다주고 .... – ganesh

+0

만약이 프로젝트를 메인 윈도우에 디스플레이 버튼을 돌리지 만 팝 윈도우가 필요하다면 ... 소프트 키 보드를 클릭하면 ..... ..... 그게 전부예요 .......... – ganesh

0

I 전자가 .. onCreateonClick 외부 코드를 넣어 .... 통해 UR 팝업을 제거하는 setOnclickListener를 사용 코드를 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

위의 코드를 사용해보십시오. ... –

관련 문제