我有一个Tabviewout,其中的viewPager包含2个视图。 每个视图都有其自己的片段,它们在SectionPageAdapter类中定义(我创建选项卡式活动时android studio自动创建)
我正在尝试从一个片段中访问方法(我们将2个片段称为frag1和frag2),然后按照here和here的说明进行操作。
由于动态地定义了我的2个片段,所以我使用findFragmentbyTag而不是findFragmentbyId,并且给我的frag1标签,以便我可以找到他。
下面的代码可以正常工作,但是问题是因为我在.beginTransaction中添加了一个“ new frag1()”,所以我的frag1的数据与ViewPager上运行的实际frag1的数据不同。
在我的MainActivity中:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.add(R.id.view_pager, new frag1(), "testfrag")
.commit();
TextView textView = findViewById(R.id.textview);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
frag1 myfrag = (frag1) getSupportFragmentManager().findFragmentByTag("testfrag");
myfrag.testmeh();
}
});
}
在我的frag1中:
public class frag1 extends Fragment {
/* constructor and unrelated stuff */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
/*Doing stuff and modifying variables*/
return roootView;}
public void testmeh(){
//Do stuff
}
}
我是否可以访问在屏幕上运行的一个frag1,以便我可以使用其方法(将使用其修改后的变量)而不是新的frag1?