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

안드로이드 프래그먼트 액션바에 대한 질문입니다.

0 추천

안녕하세요.. 이제 막 공부시작한 초보입니다..

다름이 아니라, 제가 액션바를 만들었는데요.

여기서 각 항목마다. 다른 클래스를 불러오는 방법이 궁금합니다. 

예로들어서. 어떤 항목의 바를 눌렀을때.. (1~4번의 액션바. 탭이 있다면.. ) 

그 항목에서 다른 클래스에서 만든 것을 보고 싶은데요. (예로. 4번을 눌렀을때, 미리 버튼을 만든 클래스를 불러오기)

어떻게 하는건지 잘 모르겠습니다... ㅠㅠ.. 

 

코드는 이렇게 됩니다.

 

 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
 
...
 
bar.addTab(bar.newTab().setText("Option").setTabListener(
new TabListener<FourFragment>(this, "Four", FourFragment.class)));
 
bar.show();
}
 
public static class TabListener<T extends Fragment>
implements android.app.ActionBar.TabListener{
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
 
public TabListener(Activity activity, String tag, Class<T> clz) {
 
mActivity = activity;
mTag = tag;
mClass = clz;
}
 
@Override
public void onTabReselected(Tab arg0, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
 
@Override
public void onTabSelected(Tab arg0, FragmentTransaction ft) {
if(mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
 
@Override
public void onTabUnselected(Tab arg0, FragmentTransaction ft) {
if(mFragment != null) {
ft.detach(mFragment);
}
}
}
 
----------------------------------

 

 

public static class FourFragment extends Fragment {
int mNum;
static FourFragment newInstance(int num) {
FourFragment f = new FourFragment();
 
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNum = this.getArguments() != null ? this.getArguments().getInt("num") : 1;
}
 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
View v = inflater.inflate(R.layout.main, container, false);
View tv = v.findViewById(R.id.text);
 
((TextView)tv).setText("Fragment #" + FourFragment.class.getName());
return v;
}
}
 
-----------------------------  이 밑부분은. Option.java 로. 다른 클래스입니다.
 
public class Option extends Activity implements OnClickListener {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        btn = new Button(this); //이 클래스에서 만든다는 의미로 this사용
        btn.setText("자바로 만든 Button");
 
        setContentView(btn);
 
        BtnHandler bh = new BtnHandler();
        btn.setOnClickListener(bh);
    }

 

moca (500 포인트) 님이 2013년 5월 23일 질문
moca님이 2013년 5월 23일 수정

1개의 답변

0 추천

각각 탭마다 각각 프래그먼트를 넣고싶다는건가요??

		@Override
		public void onTabSelected(Tab tab, FragmentTransaction transaction) {
			switch (tab.getPosition()) {
			case 0:
				transaction.add(R.id.fragment설정한아이디, new Fragment1(), fragmentView.getText());
				break;

				transaction.add(R.id.fragment설정한아이디, new Fragment2(), fragmentView.getText());
			case 1:
				break;
			}
		}

 

bangbang (8,820 포인트) 님이 2013년 5월 23일 답변
bangbang님이 2013년 5월 24일 수정
...