마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 인텐트 값넘기기

0 추천
<MainActivity.java>

public class MainActivity extends AppCompatActivity {
    ArrayList<Song> al = new ArrayList<Song>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        al.add(new Song("소녀",R.drawable.img01,"오혁(Hyukk Oh)"));
        al.add(new Song("Prologue",R.drawable.img02,"허각"));
        al.add(new Song("못먹는 감 (Sour Grapes)",R.drawable.img03,"산이(San E)"));
        al.add(new Song("걱정말아요 그대",R.drawable.img04,"이적"));
        al.add(new Song("그날을 내 등 뒤로",R.drawable.img05,"허각"));
        al.add(new Song("청춘 (feat. 김창완)",R.drawable.img06,"김필(Kim Feel"));
        al.add(new Song("Hot Pink",R.drawable.img07,"EXID(이엑스아이디)"));
        al.add(new Song("널 생각해",R.drawable.img08,"윤하(Younha/ユンナ)"));
        al.add(new Song("사랑은 가슴이 시킨다 Part.3",R.drawable.img09,"버즈(Buzz)"));
        al.add(new Song("또 다시 사랑",R.drawable.img10,"임창정"));


        MyAdapter adapter = new MyAdapter(
                getApplicationContext(),
                R.layout.activity_row,
                al);

        ListView lv = (ListView)findViewById(R.id.listView1);
        lv.setAdapter(adapter);

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {

                Intent intent = new Intent(
                        getApplicationContext(),
                        (Class<?>) songdetail.Class);


                intent.putExtra("title", al.get(position).title);
                intent.putExtra("artist", al.get(position).artist);
                intent.putExtra("img", al.get(position).img);

                startActivity(intent);
            }
        });
    }
}

class MyAdapter extends BaseAdapter {
    Context context;
    int layout;
    ArrayList<Song> al;
    LayoutInflater inf;
    public MyAdapter(Context context, int layout, ArrayList<Song> al) {
        this.context = context;
        this.layout = layout;
        this.al = al;
        inf = (LayoutInflater)context.getSystemService
                (Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return al.size();
    }
    @Override
    public Object getItem(int position) {
        return al.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView==null) {
            convertView = inf.inflate(layout, null);
        }
        ImageView iv = (ImageView)convertView.findViewById(R.id.imageView1);
        TextView tvName = (TextView)convertView.findViewById(R.id.textView1);
        TextView tvInfo = (TextView)convertView.findViewById(R.id.textView2);

        Song m = al.get(position);
        iv.setImageResource(m.img);
        tvName.setText(m.title);
        tvInfo.setText(m.artist);

        return convertView;
    }
}

class Song {
    String title = "";
    int img;
    String artist = "";
    public Song(String title, int img, String artist) {
        super();
        this.title = title;
        this.img = img;
        this.artist = artist;
    }
    public Song() {}
}
<songdetail.java>


public class songdetail extends Activity {

    public static Object Class;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_songdetail);

        TextView tvTitle = (TextView)findViewById(R.id.textView1);
        TextView tvArtist = (TextView)findViewById(R.id.textView2);
        ImageView iv = (ImageView)findViewById(R.id.imageView1);

        Intent intent = getIntent();
        tvTitle.setText(intent.getStringExtra("title"));
        tvArtist.setText(intent.getStringExtra("artist"));
        iv.setImageResource(intent.getIntExtra("img", 0));

    }

    public class Class {
    }
}

인텐트값넘기기인데 앱은 실행되지만 곡 목록을 선택하면 프로그램이 종류되네요 ㅠ

익명사용자 님이 2019년 4월 15일 질문
intent.getIntExtra("img", 0) 값이 없는 리소스를 반환하지 않았거나, AndroidManifset.xml에 songdetail activity를 동록 하지 않는 이상,
딱히 문제를 찾기 어렵네요..  로그캣을 올려주세요.
Intent에 getApplicationContext()말고 MainActivity.this로 넘겨보는건 어떤가요?

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...