【发布时间】:2016-12-30 22:31:17
【问题描述】:
我有以下菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
app:showAsAction="never"
android:title="Settings" />
<item android:id="@+id/menu_share"
android:icon="@drawable/ic_heart_outline_white_24dp"
app:showAsAction="always"
android:title="Favorite" />
</menu>
如何为此设置 onClick 侦听器?请记住,我的课程扩展了 Fragment:
public class My_Profile extends Fragment implements ....{}
...我不知道这是否有什么不同,但我已经在这个 java 文件中扩展了一个布局。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.testFragment, container, false);
...
}
更新 1
这是我在提出建议后尝试的,但似乎没有任何反应,有人可以告诉我我做错了什么:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_share) {
Log.d("ButtonClick", "button click worked");
}
return super.onOptionsItemSelected(item);
}
在 onCreate 中添加了这个:
setHasOptionsMenu(true);
更新 2
不知道这是否有什么不同,我目前只是在处理一个示例,菜单也像这样膨胀。我不知道这是否会影响其他两种方法:
mToolbar.inflateMenu(R.menu.menu_main);
更新 3
这是我现在尝试过的,但按钮单击仍然没有记录任何内容:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
myView = inflater.inflate(R.layout.testFragment, container, false);
...
return myView;
}
只是为了测试重定向到我的其他活动之一,但仍然没有任何反应:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.menu_share) {
Intent myIntent = new Intent(getActivity(),LoginActivity.class);
startActivity(myIntent);
}else{
Intent myIntent = new Intent(getActivity(),SignupActivity.class);
startActivity(myIntent);
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_main, menu);
}
【问题讨论】:
-
谁能帮忙?到目前为止没有任何解决方案有效
标签: java android xml android-activity fragment