我想从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();
答案 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();