【发布时间】:2018-08-21 19:14:18
【问题描述】:
我有一个活动。当我单击按钮时,我想在 Fragment 中运行该方法。但它不起作用。我尝试了很多方法,但都无法奏效。
我的活动;
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();
}
});
}
}
我的片段适配器
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;
}
}
第一个片段
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);
}
}
很抱歉造成混乱。我想要做的是在我按下 Activity 中的按钮时运行 MyMethod。 MyMethod 是片段中的一个特殊方法。对于一开始无法添加代码,我再次道歉。
【问题讨论】:
-
您确定要在 onclick 中创建片段的新实例吗?该方法应该做什么?如果你想看到它的内容,你需要以某种方式显示片段
-
@Isa,如果不加载片段,您不能仅通过它的对象调用方法。您是否在活动中加载了片段。如果是,请显示代码。
-
@StarterPack 我真的不想创建一个新片段。单击按钮时,我想访问片段。片段内的对象就足够了。我无法运行任何东西。
-
@UmangBurman 我试图将我的代码的相关部分添加到图片中。请检查。
-
“不起作用”不是有用的问题描述。请具体。
标签: java android android-studio