我有以下菜單:菜單項onClickListener的片段
<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監聽器呢?銘記我的類擴展片段:
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
不知道這是否有什麼區別,我只是在做一個例子,目前菜單也是這樣膨脹的。我不知道如果影響其他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);
}
誰能幫助?沒有方法解決工作至今 – BadCodersHub