안드로이드 개발 질문/답변
(글 수 45,052)
package exam.SelfSos;
import java.util.ArrayList;
import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView;
public class Advice extends Activity {
ArrayList<MyItem> arItem;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.advice);
arItem = new ArrayList<MyItem>();
MyItem mi;
mi = new MyItem(R.drawable.timer_image, "타이머 기능");arItem.add(mi);
mi = new MyItem(R.drawable.siren_image, "사이렌 기능");arItem.add(mi);
mi = new MyItem(R.drawable.bell_image, "벨소리 기능");arItem.add(mi);
MyListAdapter MyAdapter = new MyListAdapter(this, R.layout.advice_list, arItem);
ListView MyList;
MyList=(ListView)findViewById(R.id.list);
MyList.setAdapter(MyAdapter);
}
}
//리스트 뷰에 출력할 항목
class MyItem {
MyItem(int aIcon, String aName) {
Icon = aIcon;
Name = aName;
}
int Icon;
String Name;
}
//어댑터 클래스
class MyListAdapter extends BaseAdapter {
Context maincon;
LayoutInflater Inflater;
ArrayList<MyItem> arSrc;
int layout;
public MyListAdapter(Context context, int alayout, ArrayList<MyItem> aarSrc) {
maincon = context;
Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arSrc = aarSrc;
layout = alayout;
}
public int getCount() {
return arSrc.size();
}
public String getItem(int position) {
return arSrc.get(position).Name;
}
public long getItemId(int position) {
return position;
}
// 각 항목의 뷰 생성
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
if (convertView == null) {
convertView = Inflater.inflate(layout, parent, false);
}
ImageView img = (ImageView)convertView.findViewById(R.id.img);
img.setImageResource(arSrc.get(position).Icon);
TextView txt = (TextView)convertView.findViewById(R.id.text); txt.setText(arSrc.get(position).Name);
ImageButton btn = (ImageButton)convertView.findViewById(R.id.btn);
btn.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder bld = new AlertDialog.Builder(Advice.this);
bld.setTitle("타이머 기능");
bld.setMessage("타이머 기능은....");
bld.setIcon(R.drawable.button_image);
bld.show();
}
});
return convertView;
}
}
마지막단락 다섯번째줄
AlertDialog.Builder bld = new AlertDialog.Builder(Advice.this); 에서
No enclosing instance of the type Advice is accessible in scope 이런 오류나 뜨는데 이 오류는 왜 뜨는거죠?
네이버, 구글 등등 다 찾아봐도 모르겠어요 .....
아시는분 답변해주시면 감사하겠습니다!




Advice 액티비티 클래스의 영역(scope)을 벗어난 상태에서 접근하려하니 발생되는 오류입니다.
커스텀 어댑터 클래스를 Advice 액티비티 클래스의 이너 클래스로 선언하면 해결됩니다.