【发布时间】:2015-02-17 18:20:56
【问题描述】:
这张图片可能会更好地描述我的问题。当我在第一个片段(第一个图像)上添加第二个片段(第二个图像)时,第一个片段元素(Spinner,EditText)仍然处于活动状态。活动意味着触摸同一个地方我可以看到下拉菜单正在下降。
我无法替换片段,因为我需要回到用户离开第一个片段的相同状态。谁能告诉我问题出在哪里。
我正在使用广播添加第二个片段,因为它需要从 baseAdapter listview 调用。代码是这样的。
ListView onclick
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
Log.v("TAG", "Clicked: " + itemListPogo.get(position).getitemIdplato());
Intent i = new Intent("start.fragment.action");
i.putExtra("plateId", itemListPogo.get(position).getitemIdplato());
mContext.sendBroadcast(i);
}
});
复活
mBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extra = intent.getExtras();
String plateId = extra.getString("plateId");
Fragment fragment = new PlateDetailsFragment(DashBoardActivity.this, Integer.parseInt(plateId));
FragmentManager fragmentManager = (DashBoardActivity.this).getFragmentManager();
fragmentManager.popBackStack("back", FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentManager.beginTransaction().add(R.id.frame_container, fragment).addToBackStack(plateId).commit();
}
};
this.registerReceiver(mBroadcastReceiver, new IntentFilter("start.fragment.action"));
【问题讨论】:
-
“我无法替换片段,因为我需要回到用户离开第一个片段的相同状态”——您似乎正在通过
popBackStack()删除旧片段,所以我不明白这个评论。 “我正在使用广播添加第二个片段,因为它需要从 baseAdapter 列表视图中调用”——请不要为此使用系统广播。使用进程内事件总线(LocalBroadcastManager、greenrobot 的 EventBus、Square 的 Otto 等)。就目前而言,任何人都可以破解您的应用程序。
标签: android android-fragments android-listfragment