안드로이드 개발 질문/답변
(글 수 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 액티비티 클래스의 이너 클래스로 선언하면 해결됩니다.