세 개의 탭이있는 탐색 모음이 각 탭에있는 조각입니다. 내 두 번째 조각의 onCreateView 방법이 토스트 메시지를 썼다 : 내가 원하는 것은두 번째 탭을 클릭 할 때만이 토스트 메시지를 어떻게 표시합니까?
public class SecondFragment extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.second_layout,container,false);
Toast.makeText(getContext(), "Test", Toast.LENGTH_LONG).show();
return rootView;
}
그 나는이 탭에게 메시지가 표시를 클릭하는 경우에만. 그러나 문제는 응용 프로그램을 시작하면 메시지가 직접 표시되지만 그 이유는 무엇입니까?
public class MainActivity extends AppCompatActivity{
NavigationView mNavigationView;
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
*Setup the DrawerLayout and NavigationView
*/
mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ;
/**
* Lets inflate the very first fragment
* Here , we are inflating the TabFragment as the first Fragment
*/
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit();
}
}
그리고 (I는이 질문에 대해 중요하다고 생각) 내 TabFragment : 여기
내 MainActivity.java입니다public class TabFragment extends Fragment {
public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 3 ;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/**
*Inflate tab_layout and setup Views.
*/
View x = inflater.inflate(R.layout.tab_layout,null);
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewPager = (ViewPager) x.findViewById(R.id.viewpager);
/**
*Set an Apater for the View Pager
*/
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
/**
* Now , this is a workaround ,
* The setupWithViewPager dose't works without the runnable .
* Maybe a Support Library Bug .
*/
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return x;
}
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
/**
* Return fragment with respect to Position .
*/
@Override
public Fragment getItem(int position)
{
if(position == 0){
return new FirstFragment();
}
if(position == 1){
return new SecondFragment();
}
if(position == 2){
return new ThirdFragment();
}
return null;
}
@Override
public int getCount() {
return int_items;
}
/**
* This method returns the title of the tab according to the position.
*/
@Override
public CharSequence getPageTitle(int position) {
switch (position){
case 0 :
return "First";
case 1 :
return "Second";
case 2 :
return "Third";
}
return null;
}
}
}
그래서 어디를 표시 Toast.makeText(getContext(), "Test", Toast.LENGTH_LONG).show();
말을해야합니까 두 번째 탭을 눌러야합니까?
나는 토스트 예제를 가지고이 질문을했다. 하지만 실제로 두 번째 탭을 클릭 할 때 삽입 광고를 표시하려고합니다. 따라서이 행을 어디에 쓸 것인지 알아야합니다. –