2012-07-15 4 views
1

나는이 문제에 대한 답변을 찾기 위해 노력했지만 대부분 getApplicationContext() 문제를 지적하지만 getApplicationContext()를 사용하지는 않습니다. 기본적으로 활동 시작시 팝업 창이 열리려고하지만 활동이 시작될 때 위의 오류로 강제 종료됩니다.

코드 메신저 writen 한은 다음과 같습니다

protected void onCreate(Bundle paramBundle) { 
    super.onCreate(paramBundle); 
    setContentView(R.layout.installguides_menu); 
    setTitleFromActivityLabel(R.id.title_text); 

    btn_Back = (Button) findViewById(R.id.btn_Back); 
    btn_Back.setOnClickListener (btn_Back_onClick); 

    btn_Ubuntu10Guide = (Button) findViewById(R.id.btn_Ubuntu10Guide); 
    btn_Ubuntu12Guide = (Button) findViewById(R.id.btn_Ubuntu12Guide); 
    btn_BacktrackGuide = (Button) findViewById(R.id.btn_BacktrackGuide); 
    btn_DebianGuide  = (Button) findViewById(R.id.btn_DebianGuide); 

    btn_Ubuntu10Guide .setOnClickListener (btn_Ubuntu10Guide_onClick); 
    btn_Ubuntu12Guide .setOnClickListener (btn_Ubuntu12Guide_onClick); 
    btn_BacktrackGuide .setOnClickListener (btn_BacktrackGuide_onClick); 
    btn_DebianGuide  .setOnClickListener (btn_DebianGuide_onClick); 

    LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
    View popupView = layoutInflater.inflate(R.layout.donation_popup, null); 
      final PopupWindow popupWindow = new PopupWindow(
       popupView, 
       LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT); 

    Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss); 
    btnDismiss.setOnClickListener(new Button.OnClickListener(){ 

    public void onClick(View v) { 
     popupWindow.dismiss(); 
    }}); 

    popupWindow.showAsDropDown(btn_Ubuntu10Guide, 50, -30); 
} 

당신이 사람은 그래서 당신의 마지막 희망, 시간에 대한 대답을 사냥하고 도움이 될 수 있습니다 희망!

+0

게시 logcat 더 좋을 것입니다. –

답변

0

나의 첫 번째 추측은 onCreate 안에 팝업을 표시 할 수 없다는 것입니다. 그것은 응용 프로그램을 초기화하고 레이아웃을 구성하기위한 것이지만 대신 강제로 팝업을 표시합니다.

onStart()은 더 적합한 장소입니다. 이 기능을 무시하고 거기에 팝업을 표시하십시오. onResume()에서 선호하는 경우 사용자가 응용 프로그램을 시작할 때뿐만 아니라 다른 활동으로 이동 한 후 다시 돌아올 때도 볼 수 있습니다.

편집 2 :

 LayoutInflater inflater = (LayoutInflater) 
       this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      PopupWindow pw = new PopupWindow(
       inflater.inflate(findViewById(R.id.popup_layout), null, false), 
       100, 
       100, 
       true); 

// delaying popup until after all application initialization is done 
    findViewById(R.id.main_page_layout).post(new Runnable() { 
     public void run() { 
     pw.showAtLocation(findViewById(R.id.main_page_layout), Gravity.CENTER, 0, 0); 
     } 
    }); 

이 활동 및 팝업 레이아웃에 아이디의 추가

android:id="@+id/main_page_layout" 

사용 :
ONSTART 또는에서 onCreate의 팝업을 만드는이 시도
android:id="@+id/popup_layout" 

각각 ID가 일치하도록 입력하십시오. 위의 전자 코드.

+0

그냥 시도했지만 여전히 동일한 오류가 발생하여 추측하고 있으므로 팝업 코드 자체와 더 관련이 있습니다. –

+0

onStart() 메소드에서 편집 해보십시오. – Erol

+0

지금 메신저 java.lang.NullPointerException 오류가 발생 함 메신저 : http://pastebin.com/ACxiEC5z 및 http://pastebin.com/cT5v5wsX –

관련 문제