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

프래그먼트를 상속 받는 클래스는 어댑터를 어떻게 써야하나요?

0 추천
package com.example.gradecal;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class FstFrag extends Fragment {
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		Spinner g_Sp1 = (Spinner) getView().findViewById(R.id.G_Spin1);
		ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
 R.array.grade, android.R.layout.simple_spinner_item);
		Spinner g_Sp2 = (Spinner) getView().findViewById(R.id.G_Spin2);
		Spinner g_Sp3 = (Spinner) getView().findViewById(R.id.G_Spin3);
		Spinner g_Sp4 = (Spinner) getView().findViewById(R.id.G_Spin4);
		
		Spinner s_Sp1 = (Spinner) getView().findViewById(R.id.S_Spin1);
		Spinner s_Sp2 = (Spinner) getView().findViewById(R.id.S_Spin2);
		Spinner s_Sp3 = (Spinner) getView().findViewById(R.id.S_Spin3);
		Spinner s_Sp4 = (Spinner) getView().findViewById(R.id.S_Spin4);
		
		return inflater.inflate(R.layout.sub_1, container, false);
	}
}

지금 대학교 마지막 시험으로 앱 만들기를 하고 있어서 학점 계산기를 만들고 있습니다.

액션바를 써서 탭뷰까지는 만들어 뒀는데 이제 거기 탭에 넣어줄 프래그먼트를 상속받는 클래스를 만드는중에 스피너에 미리 XML로 만들어 둔 배열을 넣으려니 안되네요;

http://4eda.tistory.com/7 < - 이쪽 홈페이지 보면서 하고 있습니다.

ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
 R.array.grade, android.R.layout.simple_spinner_item);

프래그먼트에서는 기존 엑티비티 상속받던 클래스에서 쓰던 방법으로는 안되는 건가요?

답변 부탁드립니다 ㅠ

참고로 4.1.2 젤리빈 이상에서 동작되게 만드는 중입니다.

생초보개발자준비생 (250 포인트) 님이 2014년 12월 10일 질문

1개의 답변

0 추천
 
채택된 답변

사용하신 ArrayAdapter의 메소드 형태는 아래와 같습니다.

public static ArrayAdapter<CharSequencecreateFromResource (Context context, int textArrayResId, int textViewResId)

위의 소스에서 this로 처리한 부분은 context가 들어가야 하는 부분인데, Activity일 때는 this가 context를 나타낼 수 있지만 Fragment일 때는 this가 context가 아닙니다. 따라서 동일한 방법으로 호출 불가합니다.

 

Fragment를 사용하는 경우에는 this 대신 getActivity()를 쓰면 가능하지 않을까요?

 

cc1232 (35,280 포인트) 님이 2014년 12월 10일 답변
생초보개발자준비생님이 2014년 12월 11일 채택됨
this.getActivity()를 쓰니 오류가 잡히네요.
아직 실행은 못하기 때문에 확인은 못해봤지만 감사합니다.
...