2010-05-19 7 views
0

내 앱에 사용자 정의 대화 상자가 있는데 원하는 동작을 달성하는 데 문제가 있습니다. 내 대화 상자에는 4 개의 버튼이 있습니다. (뒤로, 유효, 수정 및 복원). 사용자가 수정 또는 유효 클릭하면 다른 활동을 호출하고 싶습니다. 그래서 의도를 사용하고 있지만 충돌이 있습니다.사용자 정의 대화 상자 관련 문제

에러 로그 :

05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 05-19 java.lang.NullPointerException이 13 : 29 : 21.495 : ERROR/DEBUGTAG (974).
에서 android.content.ComponentName (ComponentName.java:75) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974). android.content.Intent (인 텐트. java : 2551) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 05-19 13 : 29 : 21.495 : 오류/디버그 (974) : 에서 android.view.View.performClick (View.java : 2,364) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) android.view.View.onTouchEvent (View.java:4179 AT) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : android.widget.TextView.onTouchEvent (TextView.java:6540) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : android.view.View.dispatchTouchEvent (View. java : 3709) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) :,android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884)에서 (974) : 에서 android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) 05/13 13 : 29 : 21.495 : ERROR/DEBUGTAG : 에서 android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 에서 android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884)) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 012에 3,516,android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:884) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974)에서 com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent (PhoneWindow.java:1659) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1107)에서 05- 19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 에서 android.app.Dialog.dispatchTouchEvent (Dialog.java:643) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:1643) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) android.view.ViewRoot.handleMessage (ViewRoot.java:1691)에서 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : at android.os.Handler.dispatchMessage (Handler.java:99) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : android.os.Looper.loop (Looper.java : 123) 05-19 13:29:21.495 : ERROR/DEBUGTAG (974) android.app.ActivityThread.main (ActivityThread.java:4363)에서 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974)에있는 java.lang . reflection.Method.invokeNative (네이티브 메서드) 05-19 13 : 29 : 21.495 : 오류/디버그 (974) : 에서 java.lang.reflect.Method.invoke (Method.java:521) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974)에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : 에서 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) 05-19 13 : 29 : 21.495 : ERROR/DEBUGTAG (974) : dalvik.system.NativeStart.main (기본 방법)

내 사용자 정의 대화 상자에서 :

package com.android.booztermobile.services; 

import com.android.booztermobile.R; 

import android.app.Dialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Button; 


public class MailDialog extends Dialog { 

    private Button btnValid; 
    private Button btnBack; 
    private Button btnRestore; 
    private Button btnModify; 
    private Context context; 


    public MailDialog(Context cont) { 
     super(cont); 
     context = cont; 
     } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d("TestApp", "Dialog created"); 
      setContentView(R.layout.dialog_classement);  

      btnValid = (Button) findViewById(R.id.btnValidClassement); 
      btnBack = (Button) findViewById(R.id.btnBackClassement);  
      btnRestore = (Button) findViewById(R.id.btnRestoreClassement); 
      btnModify = (Button) findViewById(R.id.btnModifyClassement); 

    } 
} 

및 활동 (잘라 내기 때문에 너무) 길이 :

 //create dialog 
public void getMailInformations(View v, Context context){ 

    currentMail = (MailHeader) v.getTag(); 

    dial = new MailDialog(context); 

    dial.setTitle("Classement"); 
    dial.show(); 

    btnValidClassement = (Button) dial.findViewById(R.id.btnValidClassement); 
    btnValidClassement.setOnClickListener(this); 

} 

/** 온 클릭 : */

public void onClick(View view) { 

//THIS WORKS (Activity Button) 
    if (view == lblPreviousMails) { 

      positionList -= 20; 
      // create Intent 
      Intent defineIntentDisplayPreviousMails = new Intent(HeaderMailDisplayActivity.this, HeaderMailDisplayActivity.class); 

      //Create bundle to pass informations to the other activity 
      Bundle objetbundle = new Bundle(); 
      objetbundle.putString("positionList", String.valueOf(positionList)); 
      objetbundle.putStringArrayList("currentMails", seqnumList); 
      objetbundle.putString("uidh", uidh); 
      defineIntentDisplayPreviousMails.putExtras(objetbundle); 

      // call headermailDisplayActivity 
      HeaderMailDisplayActivity.this.startActivity(defineIntentDisplayPreviousMails); 

     } 

//THIS DOESN'T WORKS (Dialog Button) 
    if(view == btnValidClassement){ 

    try{ 

    ClassementHandlerCall classement = new    ClassementHandlerCall(); 
     boolean mailClassify = classement.classifyMail(AuthentificationActivity.uidh, 
     String.valueOf(currentMail.getSeqnum()), null, null); 

     dial.dismiss(); 

     if (mailClassify == true){ 

       //create Intent 
       Intent defineIntentClassifyMails = new Intent(MailClassificationActivity.this, HeaderMailDisplayActivity.class); 

       // Object that allows to pass person's uidh and positionList onto HeaderMailDisplayActivity 
       Bundle objetbundle = new Bundle(); 
       objetbundle.putString("uidh",uidh); 
       objetbundle.putString("positionList", String.valueOf(positionList)); 
       defineIntentClassifyMails.putExtras(objetbundle); 

       // call HeaderMailDisplayActivity 
       MailClassificationActivity.this.startActivity(defineIntentClassifyMails); 


     } 

    }catch(Exception e){ 
    // TODO Auto-generated catch block 
    Log.e("DEBUGTAG","Error occured", e); 
    e.printStackTrace(); 
    } 



    } 

} 
+0

코드를 정하십시오. 감사합니다. – hara

+0

예, 시도했지만 [코드] [/ 코드]를 넣었습니다. 작동하지 않는 것 같습니다. – Nanis

+0

편집기 사용법을 배우려면이 부분을 읽으십시오. http : //stackoverflow.com/editing-help – Cristian

답변

0

하는 스택 추적에 따르면, 그것은 보인다.

+0

네, 어느 쪽이 좋습니까 ?? 동일한 인 텐트 생성자를 두 번 사용하기 때문입니다. 하나는 작동합니다 (작동 버튼 일 때). 다른 하나는 작동하지 않습니다 (대화 버튼 일 때) – Nanis

+0

코드에서 생성자가 하나만 추가되었습니다. – Karan

+0

너무 길기 때문에 모든 코드를 추가하지 않았습니다. – Nanis

0

는이 코드

<activity android:name=".youractivityname" 
      android:configChanges="keyboardHidden|orientation" 
      android:label="@string/app_name"> 
</activity> 

으로 활동을 파일 매니페스트 XML에 추가 매니페스트에서 응용 프로그램 닫기 태그 앞에 코드를 삽입해야하는 의도에서 활동을 시작합니다.
그리고 버튼 클릭 이벤트의 코드는 다음과 같습니다 일부 잘못된 매개 변수 인 텐트 생성자를 호출하는 그런

Intent myIntent = new Intent(v.getContext(), youractivity.class); 
startActivityForResult(myIntent, 1); 
+0

내 활동이 이미 매니 페스트 XML에 선언되었습니다. 내 의도는 대화 상자 단추가 아닐 때 작동합니다. – Nanis

관련 문제