I have an Activity. When I click on the button, I want to run the method in Fragment. But it does not work. I tried many ways, but I could not get it working.
My Activity;
public class MyActivity extends Activity {
Button button;
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_main);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("First"));
tabLayout.addTab(tabLayout.newTab().setText("Second"));
viewPager= (CustomViewPager) findViewById(R.id.pager);
final PagerAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
button = (Button)findViewById(R.id.button);
button .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyFragment firstfragment = (MyFragment ) getFragmentManager().findFragmentByTag(“tab1”);
firstfragment.MyMethod();
}
});
}
}
MyFragmentAdapter
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.webviewapp.Fragment.PromotionFragment;
import com.webviewapp.Fragment.WebFragment;
public class MyFragmentAdapter extends FragmentPagerAdapter {
int tabCount;
public MyFragmentAdapter(FragmentManager fm, int numberOfTabs) {
super(fm);
this.tabCount = numberOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FirstFragment tab1 = new FirstFragment ();
return tab1;
case 1:
SecondFragment tab2 = new SecondFragment ();
return tab2;
default:
return null;
}
}
@Override
public int getCount() {
return tabCount;
}
}
FirstFragment
public class FirstFragmentextends Fragment {
Button fragmentbutton;
public FirstFragment() {
// Required empty public constructor
}
@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_web, container, false);
fragmentbutton = (Button) view.findByViewId(R.id.fragmentbutton );
}
public void MyMethod(){
fragmentbutton.setVisibility(View.GONE);
}
}
I'm sorry to cause confusion. What I'm trying to do is to run MyMethod when I press the button in Activity. MyMethod is a special method in the fragment. I apologize again for not being able to add the codes at first.