我有一个包含两个片段的FragmentActivity(support-v4)。并且都包含一个带有ActionBar的SearchView的菜单。
PlayListFragment:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(LOGTAG, String.format("onCreateOptionsMenu(%s,%s)", this, menu));
inflater.inflate(R.menu.playlist_ab_menu, menu);
buildLocalSearchView(menu.findItem(R.id.menu_playlist_search));
super.onCreateOptionsMenu(menu, inflater);
}
private void buildLocalSearchView(MenuItem item) {
SearchView searchView = (SearchView) item.getActionView();
searchView.setSubmitButtonEnabled(false);
searchView.setIconifiedByDefault(true);
searchView.setIconified(true);
//don't work because a bug in android, @see https://code.google.com/p/android/issues/detail?id=25758
searchView.setOnCloseListener(this);
//workaround for the above
MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return true;
}
});
searchView.setOnQueryTextListener(adapter);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(LOGTAG, String.format("onCreateOptionsMenu(%s,%s)", this, menu));
inflater.inflate(R.menu.filterlist_ab_menu, menu);
// Get the SearchView and set the searchable configuration
buildLocalSearchView(menu.findItem(R.id.menu_filterlist_search));
super.onCreateOptionsMenu(menu, inflater);
}
07-25 05:09:29.277 3315-3315/de.NullZero.ManiDroid D/de.NullZero.ManiDroid.presentation.fragments.FilterListFragment﹕ onDestroyView(FilterListFragment{b12b8090 #2 id=0x7f0a0085 FILTER_2})
07-25 05:09:29.277 3315-3315/de.NullZero.ManiDroid D/PlaylistFragment﹕ onCreate(PlaylistFragment{b13dcc58 #3 id=0x7f0a0085 PLAYLIST},null)
07-25 05:09:29.277 3315-3315/de.NullZero.ManiDroid D/PlaylistFragment﹕ onViewCreated(PlaylistFragment{b13dcc58 #3 id=0x7f0a0085 PLAYLIST},null)
07-25 05:09:29.277 3315-3315/de.NullZero.ManiDroid D/de.NullZero.ManiDroid.presentation.ManiDroidAppActivity﹕ onBackStackChanged() Fragment:PlaylistFragment{b13dcc58 #3 id=0x7f0a0085 PLAYLIST}
07-25 05:09:29.287 3315-3360/de.NullZero.ManiDroid D/DEBUG﹕ searchInPlaylist() = 2 ms
07-25 05:09:29.307 3315-3315/de.NullZero.ManiDroid D/PlaylistFragment﹕ onCreateOptionsMenu(PlaylistFragment{b13dcc58 #3 id=0x7f0a0085 PLAYLIST},com.android.internal.view.menu.MenuBuilder@b106ad90)
07-25 05:09:29.317 3315-3315/de.NullZero.ManiDroid D/PlaylistFragment﹕ onPrepareOptionsMenu(PlaylistFragment{b13dcc58 #3 id=0x7f0a0085 PLAYLIST},com.android.internal.view.menu.MenuBuilder@b106ad90)
07-25 05:09:29.477 3315-3364/de.NullZero.ManiDroid D/DEBUG﹕ searchInFilter(, ManitobaFilter{filterName='Zuletzt gehört'}) = 178 ms
07-25 05:09:29.477 3315-3364/de.NullZero.ManiDroid D/DEBUG﹕ searchInPlaylist(max) = 1 ms
附注。
我找到了原因,但没有解决方法:com.android.internal.widget.ActionBarView.ExpandedActionViewMenuPresenter#CollapseItemActionView
呼叫
// Do this before detaching the actionview from the hierarchy, in case
// it needs to dismiss the soft keyboard, etc.
if (mExpandedActionView instanceof CollapsibleActionView) {
((CollapsibleActionView) mExpandedActionView).onActionViewCollapsed();
}
07-25 05:09:29.477 3315-3364/de.NullZero.ManiDroid D/DEBUG﹕searchInFilter(, ManitobaFilter{filterName='Zuletzt gehört'})
com.android.internal.view.menu.MenuBuilder#restoreActionViewStates
如何禁用ActionBar/SearchView/TextView的保存和还原?
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(LOGTAG, String.format("onDestroyView(%s)", this));
searchView.setOnQueryTextListener(null);
searchView.setQuery("", true);
}
这个就行了。因为所有SearchView都具有相同的TextView,因此从相同的bundle-key保存/还原,所以不可能使用多个SearchView。
在Java中,对于两个JVM(运行在同一台物理机器上),是否有办法使用/共享相同的内存地址空间?假设JVM-1中的生产者将消息放在特定的预定义内存位置,如果JVM-2上的消费者知道要查看哪个内存位置,那么它是否可以检索消息?
问题内容: 我需要在两个(或更多个)组合框之间共享数据,但是我想独立选择元素。例如,如果我在第一个comboBox中选择Object1,则我的第二个ComboBox也选择Object1,因为它们具有相同的模型(DefaultComboBoxModel,并且此模型还管理所选的对象)。但是我不想要这种行为。我想在我的comboBoxes中独立选择对象。当我在第一个comboBox中选择对象时,我的第二
我有一个活动- 。在这个活动中,我有两个片段,这两个片段都是我在xml中以声明方式创建的。 我正在尝试将用户输入的文本的传递到Fragment B 我知道一个片段可以使用获得对其活动的引用。所以我猜我会从那里开始?
我正在试图弄清楚如何在Helm中的两个图表之间共享数据。 在两个图表之间共享configmap的最佳实践是什么?
我有一个人[]有三个人(p1,p2,p3)。Person类有两个属性name和email。 我使用了以下代码。 但我不想这样用。我想使用两个组合框与相同的型号。我尝试使用DefaultComboBoxModel并重写getElementAt()方法,如下所示。 } 问题是如何使用相同的ComboBoxModel在一个JComboBox中添加Person[]的所有名称,并在另一个JComboBox中
我正在考虑重构我的代码,以便将MotionLayout用于动画,但目前它严重依赖于共享元素转换。MotionLayout支持这一点吗? 我似乎在网上找不到任何关于这件事的信息。我发现一条tweet声明MotionLayout不处理活动之间的共享元素转换,但没有关于片段的信息。