You will be fine

<Andriod> 9. Intent, TabView

by BFine
반응형

1. 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 화면에 로딩시킨다

실행


                 

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기