Я использую пользовательский макет в качестве пункта меню. Я хочу щелкнуть элементы пользовательского макета, но во время работы произошла ошибка.Вот приведенный фрагмент:
При выполнении onPrepareOptionsMenu произошла нулевая ссылка на объект.
text_drawer_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:id="@+id/grp7"
android:visible="true">
<item
android:id="@+id/text_drawer_horizontal"
app:actionLayout="@layout/drawer_horizontal_items"
android:title="Layout">
</item>
</group>
</menu>
hook_horizont_items.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="20dp"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_marginEnd="50dp"
android:gravity="center"
android:layout_marginTop="10dp"
android:id="@+id/lin_hor_item">
<TextView
android:id="@+id/txtUndo"
android:layout_marginTop="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Undo"
android:textSize="14sp"
android:drawableLeft="@drawable/ic_undo_grey"
android:drawablePadding="5dp"
android:layout_marginStart="0dp"
android:textColor="#000"/>
<View
android:layout_width="1dp"
android:layout_height="40dp"
android:layout_marginStart="20dp"
android:background="#80757575"
android:layout_marginTop="0dp"
android:layout_toRightOf="@id/txtUndo"
android:id="@+id/line"
/>
<TextView
android:id="@+id/txtRedo"
android:layout_marginTop="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Redo"
android:textSize="14sp"
android:drawableRight="@drawable/ic_redo_grey"
android:drawablePadding="5dp"
android:layout_marginStart="20dp"
android:layout_toRightOf="@id/line"
android:textColor="#000"/>
</RelativeLayout>
TextNotes.java
TextView TxtUndo,TxtRedo;
public class TextNotes extends AppCompatActivity implements View.OnTouchListener, AdapterView.OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_notes);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.text_note_menu,menu);
MenuItem item = menu.findItem(R.id.text_menu_search);
searchView.setMenuItem(item);
return true;
// return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
RelativeLayout horizontalLayout =(RelativeLayout) menu.findItem(R.id.text_drawer_horizontal).getActionView();
TxtUndo =(TextView) horizontalLayout.findViewById(R.id.txtUndo);
TxtRedo=(TextView) horizontalLayout.findViewById(R.id.txtRedo);
return super.onPrepareOptionsMenu(menu);
}
}
Следующая ошибка возникает при выполнении соответствующей операции TextNotes.java:
2019-06-03 15:19:58.034 22876-22876/com.example.unifiednotesnew E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.unifiednotesnew, PID: 22876
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.View android.view.MenuItem.getActionView()' on a null object reference
at com.example.unifiednotesnew.TextNotes.onPrepareOptionsMenu(TextNotes.java:768)
at android.app.Activity.onPreparePanel(Activity.java:3253)
at android.support.v4.app.FragmentActivity.onPrepareOptionsPanel(FragmentActivity.java:559)
at android.support.v4.app.FragmentActivity.onPreparePanel(FragmentActivity.java:547)
at android.support.v7.view.WindowCallbackWrapper.onPreparePanel(WindowCallbackWrapper.java:99)
at android.support.v7.app.AppCompatDelegateImpl$AppCompatWindowCallback.onPreparePanel(AppCompatDelegateImpl.java:2576)
at android.support.v7.view.WindowCallbackWrapper.onPreparePanel(WindowCallbackWrapper.java:99)
at android.support.v7.app.ToolbarActionBar$ToolbarCallbackWrapper.onPreparePanel(ToolbarActionBar.java:522)
at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:456)
at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:56)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6316)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)