2013-01-24 1 views
-8

대화 상자를 호스팅하는 클래스의 상위 절반입니다.Im는 단 하나의 선택 방법으로 texview의 텍스트를 설정하려고 시도합니다.

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.View; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MovieAdd extends Activity { 

private EditText mTitleText; 
private Button mSavebutton; 
private Long mRowId; 
private MyMoviesDBAdapter mDbHelper; 
private String genrename; 
private TextView mGenretext; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.getWindow().setSoftInputMode  (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

    mDbHelper = new MyMoviesDBAdapter(this); 

    setContentView(R.layout.add_movie_dialog); 


    mTitleText = (EditText) findViewById(R.id.mMovietitle); 
    mGenretext = (TextView) findViewById(R.id.genre_text); 


    mSavebutton = (Button) findViewById(R.id.mSavebutton); 

    mRowId = savedInstanceState != null ? savedInstanceState.getLong(MyMoviesDBAdapter.KEY_ROWID) 
     : null; 

    registerButtonListeners(); 
    onCreateDialog(savedInstanceState); 

} 

문제는이 코드를 사용할 때 텍스트 뷰는 항상 변수가 항상 내가이 최선의 방법입니다 모르겠어요 (14)에 초기화 될 것 같다 ""을 "스릴러"로 설정되어 있다는 것입니다 대화 상자가 닫히고 나면 나중에 "genrename"변수가 데이터베이스로 전달됩니다.

public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(MovieAdd.this); 
    builder.setTitle(R.string.select_genre); 
      builder.setItems(R.array.genres, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       // The 'which' argument contains the index position 
       // of the selected item 

      switch(which) { 
       case 0: 
        genrename = "Action"; 
       case 1: 
        genrename = "Anime"; 
       case 2: 
        genrename = "Childrens"; 
       case 3: 
        genrename = "Classics"; 
       case 4: 
        genrename = "Comedy"; 
       case 5: 
        genrename = "Cult"; 
       case 6: 
        genrename = "Documentary"; 
       case 7: 
        genrename = "Drama"; 
       case 8: 
        genrename = "Foreign"; 
       case 9: 
        genrename = "Horror"; 
       case 10: 
        genrename = "Music"; 
       case 11: 
        genrename = "Romance"; 
       case 12: 
        genrename = "Sci-fi"; 
       case 13: 
        genrename = "Sports"; 
       case 14: 
        genrename = "Thriller";     
       } 
      mGenretext.setText(genrename); 

      } 
    }); 


    return builder.show(); 
} 
+1

왜 스위치 케이스에 break를 사용하지 않았습니까? –

답변

0

스위치의 모든 경우에 사용 break 다른 제어는 그 이유를 건의 모든 정황을 마지막으로 아래로 떨어질 것 만을 스릴러만을 보여줍니다.

+0

와우. 나는 오늘 밤 일을 계속하기에 분명 피곤합니다. 나는 그 실수가 얼마나 어리 석 었는지 믿을 수 없다. 제 문제를 해결하고 저를 바보처럼 느끼게 해줘서 고맙습니다. 건배! – Stephen

+0

@Stephen 바보 같은 남자를 느끼지 마라. :) –

0

각각 break을 사용해야합니다.

public Dialog onCreateDialog(Bundle savedInstanceState) { 
AlertDialog.Builder builder = new AlertDialog.Builder(MovieAdd.this); 
builder.setTitle(R.string.select_genre); 
     builder.setItems(R.array.genres, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      // The 'which' argument contains the index position 
      // of the selected item 

     switch(which) { 
      case 0: 
       genrename = "Action"; 
      break;     
      case 1: 
       genrename = "Anime"; 
      break;     
      case 2: 
       genrename = "Childrens"; 
      break;     
      case 3: 
       genrename = "Classics"; 
      break;     
      case 4: 
       genrename = "Comedy"; 
      break;     
      case 5: 
       genrename = "Cult"; 
      break;     
      case 6: 
       genrename = "Documentary"; 
      break;     
      case 7: 
       genrename = "Drama"; 
      break;     
      case 8: 
       genrename = "Foreign"; 
      break;     
      case 9: 
       genrename = "Horror"; 
      break;     
      case 10: 
       genrename = "Music"; 
      break;     
      case 11: 
       genrename = "Romance"; 
      break;     
      case 12: 
       genrename = "Sci-fi"; 
      break;     
      case 13: 
       genrename = "Sports"; 
      break;     
      case 14: 
       genrename = "Thriller"; 
      break;     

      } 
     mGenretext.setText(genrename); 

     } 
}); 


return builder.show(); 
} 
0

로 아래에 각각의 경우에 break;을 추가

public void onClick(DialogInterface dialog, int which) { 
      // The 'which' argument contains the index position 
      // of the selected item 
     switch(which) { 
      case 0: 
       genrename = "Action"; 
       break; 
      case 1: 
       genrename = "Anime"; 
       break; 
      case 2: 
       genrename = "Childrens"; 
      case 3: 
       genrename = "Classics"; 
      case 4: 
       genrename = "Comedy"; 
       break; 
       ....................................    
      } 
     mGenretext.setText(genrename); 
     } 
}); 
관련 문제