我的一个片段中有一个浮动按钮。点击其中一个 弹出活动。现在问题出在我从活动回来的时候 片段片段不会自动刷新。我也想要它 按下后刷新。 在片段中,我在操作栏中有一个刷新按钮 按下我调用了一个refreshFragment()方法。是否有方法 我可以从一个片段中调用一个方法的android 活动。 这是我的refreshFragment()方法代码。
public void refreshFragment()
{
Fragment fragment = new BillingFragment();
android.support.v4.app.FragmentManager fragmentMg = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTrans = fragmentMg.beginTransaction();
fragmentTrans.replace(R.id.container_body, fragment, "TABBILLING");
fragmentTrans.addToBackStack(null);
fragmentTrans.commit();
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Billing");
//adapter.notifyDataSetChanged();
}
我在创建视图方法中调用它如下: -
((MainActivity)getActivity()).setFragmentRefreshListener(new MainActivity.FragmentRefreshListener()
{
@Override
public void onRefresh() {
refreshFragment();
}
});
我甚至试过调用我的主要活动的displayView()方法 通过创建MainActivity对象的另一个活动,如下所示: -
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
MainActivity main = new MainActivity();
main.displayView(1);
count = 0;
return true;
但它给了我一个空指针异常。这是我的displayView()方法。
public void onDrawerItemSelected(View view, int position) {
displayView(position);
}
public void displayView(int position) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (position) {
case 0:
fragment = new HomeFragment();
title = getString(R.string.title_home);
break;
case 1:
fragment = new BillingFragment();
title =getString(R.string.title_billing);
break;
case 2:
fragment = new StockViewFragment();
title =getString(R.string.title_stockview);
break;
case 3:
fragment = new BhishiManagementFragment();
title= getString(R.string.title_bhishiview);
break;
case 4:
fragment = new ReportingFragment();
title=getString(R.string.title_reporting);
break;
case 5:
fragment = new VendorManagementFragment();
title=getString(R.string.title_vendormanagement);
break;
case 6:
fragment = new CustomerMgmt();
title = getString(R.string.title_custmgmt);
break;
default:
break;
}
感谢任何帮助。谢谢你:)。
答案 0 :(得分:11)
我假设您在从活动回来时尝试刷新片段(该活动没有托管需要刷新的片段),如果我的假设是正确的,请尝试以下方法,请不要澄清问题与更多信息。
尝试:在片段中有一个布尔变量,并使用其生命周期方法根据片段可见状态更新其值true或false。
public class SampleFragment extends Fragment {
private boolean shouldRefreshOnResume = false;
public static SampleFragment newInstance() {
SampleFragment fragment = new SampleFragment();
return fragment;
}
public SampleFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank,
container, false);
}
@Override
public void onResume() {
super.onResume();
// Check should we need to refresh the fragment
if(shouldRefreshOnResume){
// refresh fragment
}
}
@Override
public void onStop() {
super.onStop();
shouldRefreshOnResume = true;
}
}