从活动访问片段方法

时间:2019-10-25 16:44:50

标签: android android-fragments

我有一个Tabviewout,其中的viewPager包含2个视图。 每个视图都有其自己的片段,它们在SectionPageAdapter类中定义(我创建选项卡式活动时android studio自动创建)

我正在尝试从一个片段中访问方法(我们将2个片段称为frag1和frag2),然后按照herehere的说明进行操作。

由于动态地定义了我的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?

0 个答案:

没有答案