Как заставить пункты меню реагировать на команды? - PullRequest
0 голосов
/ 05 мая 2019

У меня было меню на панели действий, но недавно я переключился на более настраиваемую панель инструментов и добавил туда же меню. Элементы «Назад», «Вперед» и «Поделиться» в меню работали нормально, когда меню было присоединено к панели действий, но теперь они не работают вообще на панели инструментов. Меню выпадает и показывает элементы отлично, но они не отвечают и просто закрывают меню по щелчку вместо того, чтобы выполнить желаемое действие и закрыть меню. Я возился с кодом и пробовал несколько разных вещей, но ничего не помогло. Есть какие-нибудь идеи о том, как я могу заставить это работать?

Это код, который работал на панели действий в основной Java:

 toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setSubtitle("Test Subtititle");
    toolbar.inflateMenu(R.menu.my_menu);

}



@Override
    public boolean onCreateOptionsMenu (Menu menu){
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.my_menu, menu);
    return super.onCreateOptionsMenu(menu);

}

    @Override
    public boolean onOptionsItemSelected (MenuItem item){
    switch (item.getItemId()) {

        case R.id.menu_back:
            onBackPressed();
            break;

        case R.id.menu_forward:
            onForwardPressed();
            break;

        case R.id.menu_share:
            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("text/plain");
            shareIntent.putExtra(Intent.EXTRA_TEXT, myCurrentUrl);
            shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Copied URL");
            startActivity(Intent.createChooser(shareIntent, "Share..."));

         }
        return super.onOptionsItemSelected(item);

    }


    private void onForwardPressed () {
    if (SearchWebAddress.canGoForward()) {
        SearchWebAddress.goForward();
    } else {
        Toast.makeText(this, "Can't go forward!", Toast.LENGTH_SHORT).show();
    }

}

Это что-то еще, что я пробовал

  toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setSubtitle("Test Subtititle");
    toolbar.inflateMenu(R.menu.my_menu);

    }

    @Override
    public boolean onCreateOptionsMenu (Menu menu){
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.my_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected (MenuItem item){
        switch (item.getItemId()) {
            case R.id.menu_back:
                onBackPressed();
                return true;
            case R.id.menu_forward:
                onForwardPressed();
                return true;
            case R.id.menu_share:
                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("text/plain");
                shareIntent.putExtra(Intent.EXTRA_TEXT, myCurrentUrl);
                shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Copied URL");
                startActivity(Intent.createChooser(shareIntent, "Share..."));
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    private void onForwardPressed () {
        if (SearchWebAddress.canGoForward()) {
            SearchWebAddress.goForward();
        } else {
            Toast.makeText(this, "Can't go forward!", Toast.LENGTH_SHORT).show();
        }
    }

Это основной xml

  <?xml version="1.0" encoding="utf-8"?>


    <RelativeLayout
        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"
        android:id="@+id/mylayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true"
        tools:context="com.gmail55cyrjj.machvelocitybrowser30.UrlSearch">


        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="67dp"

            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="-2dp"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="662dp"
            android:background="#DD000000"
            android:fitsSystemWindows="true"
            android:minHeight="?attr/actionBarSize"
            app:titleTextColor="@android:color/white" />

        <Button
            android:id="@+id/go"
            android:layout_width="58dp"
            android:layout_height="36dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="15dp"
            android:layout_marginEnd="48dp"
            android:layout_marginRight="48dp"
            android:background="#8E24AA"
            android:text="Go!"
            android:textSize="16sp" />


        <Button
            android:id="@+id/home_button"
            android:layout_width="63dp"
            android:layout_height="36dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="691dp"
            android:layout_marginEnd="170dp"
            android:layout_marginRight="170dp"
            android:background="@drawable/ic_home_black_18dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />


        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/input_search_url"
            android:layout_width="303dp"
            android:layout_height="35dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="11dp"
            android:layout_marginLeft="11dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="8dp"
            android:autofillHints=""
            android:background="#0000D1"
            android:ems="10"
            android:gravity="start|center"
            android:hint="Search or Enter Url"
            android:importantForAutofill="auto"
            android:inputType="textUri"
            android:selectAllOnFocus="true"
            android:textColorHighlight="#39ff14"
            android:textSize="18sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="@+id/home_button"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0" />


        <TextView
            android:id="@+id/textProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginTop="-32dp"
            android:layout_marginEnd="405dp"
            android:layout_marginRight="405dp"
            android:linksClickable="true"
            android:longClickable="true"
            android:scrollHorizontally="true"
            android:textSize="24sp"
            android:visibility="invisible" />


        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/swipe"
            android:layout_width="match_parent"
            android:layout_height="644dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="-1dp"
            android:layout_marginTop="62dp">


            <WebView
                android:id="@+id/webView"
                android:layout_width="match_parent"
                android:layout_height="640dp"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_marginStart="0dp"
                android:layout_marginLeft="0dp"
                android:layout_marginTop="51dp"
                android:forceHasOverlappingRendering="true"
                android:linksClickable="true"
                android:longClickable="true"
                android:scrollHorizontally="true" />


        </android.support.v4.widget.SwipeRefreshLayout>

        <android.support.v7.widget.Toolbar
            android:id="@+id/the_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/webView"
            android:layout_alignBottom="@+id/home_button"
            android:layout_alignParentStart="true"
            android:layout_marginStart="-5dp"
            android:layout_marginTop="57dp"
            android:layout_marginBottom="-4dp"
            android:background="#ffbb00"
            android:minHeight="?attr/actionBarSize">

        </android.support.v7.widget.Toolbar>

        <ProgressBar
            android:id="@+id/anotherProgressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="0dp"
            android:layout_marginTop="53dp" />


    </RelativeLayout>

Это меню в xml

  <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">


        <item
            android:id="@+id/menu_back"
            android:icon="@drawable/ic_keyboard_arrow_left_black_24dp"
            app:showAsAction="never"
            android:title="Back" />

        <item
            android:id="@+id/menu_forward"
            android:icon="@drawable/ic_keyboard_arrow_right_black_24dp"
            android:title="Forward" />



        <item
            android:id="@+id/menu_share"
            app:showAsAction="never"
            android:icon="@drawable/ic_share_black_24dp"
            android:title="Share" />

        <item android:title="Item" />

    </menu>

1 Ответ

0 голосов
/ 05 мая 2019

onCreateOptionsMenu() и onOptionsItemSelected() связаны только с меню панели действий.Если вы используете Toolbar сам по себе, тогда вы используете inflateMenu() для создания меню (как вы уже сделали), и вам нужно добавить Toolbar.OnMenuItemClickListener для обработки событий нажатия:

toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setSubtitle("Test Subtititle");
toolbar.inflateMenu(R.menu.my_menu);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean  onMenuItemClick(MenuItem item){
        switch (item.getItemId()) {
            case R.id.menu_back:
                onBackPressed();
                return true;
            case R.id.menu_forward:
                onForwardPressed();
                return true;
            case R.id.menu_share:
                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("text/plain");
                shareIntent.putExtra(Intent.EXTRA_TEXT, myCurrentUrl);
                shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Copied URL");
                startActivity(Intent.createChooser(shareIntent, "Share..."));
                return true;
            default:
                return false;
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...