And*_*Bee 2 java android android-fragments android-activity
我的一个片段中有一个浮动按钮.点击其中一个活动弹出.现在问题是当我从活动回到片段时片段没有自动刷新.我也希望它在背面刷新.在片段中,我在按下的操作栏中有一个刷新按钮,我调用了一个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();
}
Run Code Online (Sandbox Code Playgroud)
我在创建视图方法中调用它如下: -
((MainActivity)getActivity()).setFragmentRefreshListener(new MainActivity.FragmentRefreshListener()
{
@Override
public void onRefresh() {
refreshFragment();
}
});
Run Code Online (Sandbox Code Playgroud)
我甚至尝试通过创建MainActivity的对象来调用我的主要活动的displayView()方法,如下所示: -
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;
Run Code Online (Sandbox Code Playgroud)
但它给了我一个空指针异常.这是我的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;
}
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助.谢谢你:)
小智 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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10424 次 |
| 最近记录: |