2011-01-12 11 views
0

사용자 정의 대화 상자를 사용하여 제목 문자열에 대한 사용자 입력을 얻으려는 경우 사용자가 확인을 클릭하면 새로운 활동 (기본적으로 메모장)이 실행됩니다 title 문자열을 제목으로 사용합니다. 그러나 onClick() 내에서 새 활동을 발생시키는 메서드를 호출하려고하면 오류가 발생합니다.Android : 대화 상자에서 새로운 활동 시작

다음은 코드

class NewListDialog extends Dialog implements OnClickListener { 

     Button search; 
     EditText text; 

     public NewListDialog(Context context) { 
      super(context); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.newlist_dialog); 
      search = (Button) findViewById(R.id.dialog_confirm); 
      text = (EditText) findViewById(R.id.dialog_editable); 
      search.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      if (v == search) { 
       String title_name = text.getText().toString(); 

         // method for launching new activity 
       fireListEdit(title_name); 
      } 
     } 

}

void fireListEdit(String title_name) { 
     Intent i = new Intent(this, ListEdit.class); 
     i.putExtra(InvenDB.KEY_TITLE, title_name); 
     startActivityForResult(i, ACTIVITY_CREATE); 
} 

있고 난

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    switch(item.getItemId()) { 
    case INSERT_ID: 
     NewListDialog dialog = new NewListDialog(this); 
     dialog.show(); 
     return true; 
    case QUIT_ID: 
     finish(); 
     return true; 
    } 
    return super.onMenuItemSelected(featureId, item); 
} 

편집이 대화 상자를 호출 내가 에뮬레이터에서 실행하면, 나는에 대한 확인을 클릭하면 사용자 정의 대화 상자에서 "응용 프로그램이 예상치 않게 중지되었습니다."오류가 발생합니다.

편집 :

이 나는 ​​그들이 무엇을 의미하는지 정말 모르겠어요의 로그 캣입니다 : 39 : 27.668 :

01-12 17 \ ERROR/AndroidRuntime (426) : java.lang.RuntimeException가 : 활동을 시작할 수 없습니다. ComponentInfo {com.jin.inventoryapp/com.jin.inventoryapp.ListEdit} : android.database.CursorIndexOutOfBoundsException : 인덱스 0이 요청되었습니다. 크기는 0입니다.

+0

오류가 무엇인지 또는 새 활동을 시작하려는 방법을 알려주지 마십시오. – Falmarri

+0

죄송합니다. 시뮬레이터에서 실행할 때 사용자 지정 대화 상자에서 확인을 클릭하면 "응용 프로그램이 중지되었습니다 unexpectly "오류 – Jin

+0

Eclipse의 LogCat으로 이동하여 발생한 오류에 대한 자세한 정보를 얻으십시오. 그리고 매니 페스트 파일에 활동을 추가하는 것을 잊지 마십시오;) –

답변

0

문제가 있음을 알 수 있습니다. 응용 프로그램의 어댑터 (데이터) 부분. com.jin.inventoryapp.ListEdit을 백업하는 데 사용한 Adapter 클래스가 무엇이든, 데이터 액세스에 문제가 있습니다. 즉 배열이나 데이터베이스를 사용하여 ListView를 채우는 경우 먼저 체크하십시오.

This 누가 예외를 던지고 있는지 파악하는 데 유용합니다.

+0

고마워요. 그게 뭔가 문제가 생겼다는 것을 ListEdit 클래스의 ID가 잘못한 것입니다. – Jin

+0

진, 답변을 표시 할 수 있습니까? Btw, 데이터베이스 문제를 테스트하는 좋은 방법은 AndroidTestCase에서 상속받은 단위 테스트를 만드는 것입니다. 그렇게하면 DB에 액세스하고 반환 된 커서 obj를 테스트 할 수있는 활동 컨텍스트에 액세스 할 수 있습니다. – bgs

관련 문제