<Andriod> 9. Intent, TabView
by BFine1. Intent
Activity는 앱 안의 하나의 화면을 나타낸다. 다른 화면을 나타내기 위해서는 Intent 객체가 필요하다
Intent 객체 안에는 시작하는 화면이 무엇인지 설명해주는 정보들을 담고 있다.
다른 화면을 시작할 경우 startActivity 이용하여 intent를 전달한다.
메인 화면 ----intent----->서브액티비티 ------startActivityForResult, onActivityResult (결과 수신)-----> 메인화면
1. 암시적 : Intent filter에 지정한 것과 일치하는 컴포넌트를 가져온다. (Action, Call etc.. )
2. 명시적 : 컴포넌트의 이름을 분명하게 지정하여 전달하며 앱 내부 화면 전환 등에 사용된다
extra : Intent에 원하는 정보를 포함하여 보낼 수 있다.
1 2 3 4 5 | intent.putExtra("hello","world"); startActivity(intent); ========================= Bundle bundle=getIntent().getExtras(); String str=bundle.getString("hello"); | cs |
startActivityForResult( intent, code )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public void onClick(View view) { Intent intent=new Intent(getApplicationContext(),Main2Activity.class); startActivityForResult(intent,RESULT_OK);} @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {} =============================================================== @Override public void finish() { // 자동실행 setResult(RESULT_OK); super.finish(); } | cs |
2. Intent Filter
Intent Filter : 받을 인텐트가 어떤 것인지 명시해주는 것
action : intent.action.XXXX ( 지정하지 않으면 모두 통과 )
category : intent.category.XXXX (암시적 인텐트는 defult)
data : scheme(제약), port, path host etc..
3. Tab view
Tab view는 fragment 된 화면을 보여주기 위해 사용, 크롬의 탭과 같으면서 터치이동가능
fragment 된 화면들을 관리하는 것이 ViewPager이고 관리를 위한 정보는 FragmentPagerAdapter을 이용한다
Main에는 SectionsPagerAdapter[ PlcaeholderFragment ] , ViewPager [ fragment ]
public class SectionsPagerAdapter extends FragmentPagerAdapter {
//viewpager에 정보전달
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);// 0부터시작을 1로
} // input 된 화면을 반환(fragmemt)
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}// 총 텝 개수
PlaceholderFragment는 하나의 view를 가진 fragment를 포함한다(상속)
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);//map<key,value>
fragment.setArguments(args);//fragment Bundle set
return fragment; //Tab 번호를 가진 fragment 반환
}
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);//tab 아래보이는 화면
mViewPager.setAdapter(mSectionsPagerAdapter);//Viewpager에 Adapter 추가
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);//tab 뭉치
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
//Tab변경시 event 처리
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
//Tab선택시 event 처리
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
//아래 문자메세지모양
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main,container, false);
//fragment_main을 inflation(메모리에 등록=객체화)
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
//fragment_main있는 section_label[TextVeiw]
textView.setText(getString(R.string.section_format,getArguments().getInt(ARG_SECTION_NUMBER)));
// test Setting
return rootView;
}
Oncreate(Bundle) : 액티비티 객체가 생성될때 실행(생성자느낌) Bundle은 액티비티의 상태정보를 가진다.
<예제 A B C D 추가하기>
public class Tab_1 extends android.support.v4.app.Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {
View view_a=inflater.inflate
(R.layout.activity_tab_1,container,false);
// 만든 activity_tab_1.xml을 inflate(메모리 로딩)시킨다
return view_a; // 4개의 탭에 모두 똑같은 클래스를 만든다
public Fragment getItem(int position) {
switch(position){
case 0:
return new Tab_1();
case 1:
return new Tab_2();
case 2:
return new Tab_3();
case 3:
return new Tab_4();
//Tab 객체를 생성하여 반환-> TabView 화면에 로딩시킨다
실행
'공부(2018~2019) - 스킨변경전 > Android' 카테고리의 다른 글
<Android> 10. Thread, Toast (0) | 2018.05.04 |
---|---|
<Android> 8. ImageView, MapView (0) | 2018.04.24 |
<Android> 7. Make a Calculator application (0) | 2018.04.23 |
<Android> 6. xml (0) | 2018.04.19 |
<Android> 5. ConstraintLayout, FrameLayout (0) | 2018.04.17 |
블로그의 정보
57개월 BackEnd
BFine