如何从android中的另一个片段类调用一个片段的方法
我想从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();
试试这个解决方案
((FragmentA) getActivity() .getSupportFragmentManager() .findFragmentById(R.id.pageview2) ).show();
您可以像这样创建静态varibales
static FragmentB f; public static FragmentB newInstance(String title) { FragmentB f = new FragmentB(); Bundle b = new Bundle(); b.putString(ARG_STATION_TITLE, title); f.setArguments(b); return f; }
您可以使用getInstance()方法获取fragmentB的实例
public static FragmentB getInstance(){ return f; }
像这样调用FragmentB.getInstance().methodinFragmentB();
在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();