如何从android中的另一个片段类调用一个片段的方法

时间:2015-08-19 15:53:34

标签: java android android-fragments

我想从fragmentA调用FragmentB(Class)的方法我尝试在fragmentA(类)中创建fragmentb的对象,但它不起作用 这里是这个类中fragmentA的代码我有一个方法,我将通过它调用FragmentB类的方法

adddata.setOnClickListener(
        new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean isInserted = myDb.addalldata(monthly_income.getText().toString(),
                room_rent.getText().toString(),
                mess_rent.getText().toString());
            if (isInserted = true)
                Toast.makeText(getActivity().getBaseContext(), "Data Inserted", Toast.LENGTH_LONG).show();
            else
            Toast.makeText(getActivity().getBaseContext(), "Data not Inserted", Toast.LENGTH_LONG).show();
        }
    }
);

我想调用fragmentB的这个方法

public void show() {
    Cursor res = myDb.getAllData();
    StringBuffer buffer = new StringBuffer();
    while (res.moveToNext()) {
        displayresult.setText( buffer.append( res.getString(1)));
    }
}

我尝试在fragmentA的方法中编写此代码,但是收到错误

FragmentA fragment=          
    (FragmentA)getSupportFragmentManager().findFragmentById(R.id.pageview2);
    ((FragmentA)fragment).show();

3 个答案:

答案 0 :(得分:11)

试试这个解决方案:

((FragmentA) getActivity()
    .getSupportFragmentManager()
    .findFragmentById(R.id.pageview2)
).show();

答案 1 :(得分:3)

您可以像这样创建静态变量

public static FragmentB getInstance(){
    return f;
}

您可以使用getInstance()方法获取fragmentB的实例

FragmentB.getInstance().methodinFragmentB();

像这样调用{{1}}

答案 2 :(得分:1)

在FragmentA类中,您可以执行以下代码:-

private static FragmentA instance = null;

@Override  
public void onCreate(@Nullable Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
instance = this;  
}

public static FragmentA getInstance() {  
return instance;  
}

在FragmentB类中,您可以按以下方式调用方法:

FragmentA.getInstance().show();