안드로이드 개발 질문/답변
(글 수 45,052)
public class SelectAdapter extends ArrayAdapter<Question> implements OnClickListener {
private Context context;
private ArrayList<Question> questions;
private TextView questionName, questionIdx, questionFlag;
private Button questionItem;
private EditText questionEdit;
private String items, name;
private Question question;
private String[] aa;
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
public ArrayList<Question> getQuestions() {
return questions;
}
public void setQuestions(ArrayList<Question> questions) {
this.questions = questions;
}
public SelectAdapter(Context context, int textViewResourceId,
ArrayList<Question> questions) {
super(context, textViewResourceId, questions);
// TODO Auto-generated constructor stub
this.context=context;
this.questions=questions;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v = convertView;
if(v==null){
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v=vi.inflate(R.layout.surveyfrom, null);
}
question = questions.get(position);
questionName =(TextView)v.findViewById(R.id.question_name);
questionIdx = (TextView)v.findViewById(R.id.question_idx);
questionFlag = (TextView)v.findViewById(R.id.question_flag);
questionName.setText(question.getName());
questionIdx.setText(question.getIdx());
questionEdit=(EditText)v.findViewById(R.id.BtnEdit);
questionItem = (Button)v.findViewById(R.id.BtnPopUp)
questionFlag.setText("0");
items = question.getItems();
name= question.getName();
aa = items.split("\\|\\|");
questionItem.setVisibility(View.VISIBLE);
questionEdit.setVisibility(View.GONE);
questionItem.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(context).setTitle(name).setItems(
aa, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int which) {
arg0.dismiss();
questionItem.setText(aa[which]);
}
}).setCancelable(false).show();
}
}
안드로이드 초보입니다. 상기와 같이 커스텀 어댑터를 구성한후, 특정버튼 questionItem = (Button)v.findViewById(R.id.BtnPopUp)
을 클릭 하였을 시, 다이얼로그가 뜨도록 하려 합니다.
하지만 "new AlertDialog.Builder(context).setTitle(name).setItems("에서 context의 문제인지 아래와 같은 문제가 뜹니다.
android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@44e93fc0 is not valid; is your activity running?
초보인지라 여러분들의 도움의 손길을 기다립니다. 부탁드리겠습니다.




아답터의 소스만이 아닌 모든소스를 봐야지 정확한 답변이 나올텐데..
제가 예상하기론 인자값으로 들어온 Context가 액티비티 형태로 넘겨줬을텐데.. 액티비티가 단일액티비티인지 아님 자식을 가지고 있는 액티비티그룹형태인지 에 따라서 다음과 같은 에러가 날수도 있습니다. (액티비티 활동상태에 관련)
그래서 인자값을 Context가 아닌 Activity 형태로 받으시던가 캐스팅을 하시던가 둘중하나하시구
// context는 Activity 타입
new AlertDialog.Builder(context) ----> new AlertDialog.Builder(context.getParent())
이렇게 한번해보세요... 안되면...... 챙피