Пользовательская панель инструментов Android не активируется - PullRequest
0 голосов
/ 04 ноября 2019

Я создал пользовательскую панель инструментов, в которой кнопка «отмена» слева и кнопка «запись» - запись, стандартный формат, используемый большинством приложений для социальных сетей.

Это часть моего xml-кода:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    style="@style/BarTheme"
    app:theme="@style/BarTheme"
    app:popupTheme="@style/AppTheme"
    app:layout_constraintTop_toTopOf="parent"
    android:background="@color/white"
    app:title="Lend"
    android:elevation="4dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/add_item_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left|center_vertical"
            android:textSize="15dp"
            android:fontFamily="sans-serif-condensed-light"
            android:background="@null"
            android:textColor="@color/grey"
            android:text="CANCEL"></Button>

        <TextView
            android:id="@+id/add_item_post"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:fontFamily="sans-serif-condensed-light"
            android:layout_gravity="bottom"
            android:textStyle="bold"
            android:gravity="center|center_vertical"
            android:textSize="30dp"
            android:text="NEW ITEM"></TextView>


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="right|center_vertical"
            android:layout_weight="1"
            android:background="@null"
            android:fontFamily="sans-serif-condensed-light"
            android:textSize="15dp"
            android:layout_marginRight="16dp"
            android:textColor="@color/themeBlue"
            android:textStyle="bold"
            android:text="POST"></Button>
    </LinearLayout>
</androidx.appcompat.widget.Toolbar>

Это мой код style.xml:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/white</item>
    <item name="colorPrimaryDark">@color/white</item>
    <item name="colorAccent">@color/themeBlue</item>
</style>

<style name="BarTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/white</item>
    <item name="colorPrimaryDark">@color/white</item>
    <item name="colorAccent">@color/themeBlue</item>
</style>

</resources>

Теперь об активности я решилхотя бы попробуйте кнопку "отмена", но она не работает. Я попытался отладить, но это даже не входит в функцию, поэтому я думаю, что она даже не активируется.

@Override
public void onClick(View view) {
    switch(view.getId()) {
        case R.id.add_item_cancel:
            Intent goBackIntent = new Intent(AddItemActivity.this, ListingsActivity.class);
            startActivity(goBackIntent);

    }
}

Заранее спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 04 ноября 2019

Я буду считать, что вы используете реализацию onClickListener как часть своей деятельности, в которой вы вызываете кнопку, но вам нужно зарегистрировать обратный вызов, который будет вызываться при нажатии кнопки.

Добавитьследующие строки кода для вашей функции onCreate в упражнении, в котором находится ваша кнопка:

protected void onCreate(Bundle savedValues) {
    ...
    Button button = (Button)findViewById(R.id.add_item_cancel);
    button.setOnClickListener(this);
}

Реализация обратного вызова OnClickListener:

public void onClick(View v) {
    switch(view.getId()) {
        case R.id.add_item_cancel:
            // do something when the button is clicked
    }
}

См. также:

0 голосов
/ 05 ноября 2019

Убедитесь, что вы зарегистрировали onclick слушателя на кнопке отмены в onCreate или там, где вы инициализировали кнопку отмены.

Как показано ниже:

addItemCancel.setOnClickListener(this);

Затем реализуйте интерфейс View.OnClickListener, как показано ниже:

public class SettingsActivity extends BaseActivity implements View.OnClickListener{

.............

}

Затем переопределите метод onclick, как показано ниже:

@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.add_item_cancel:
                onBackPressed();
                break;
        }
    }

Если вы использовали прослушиватель щелчков только на одной кнопке или представлении, вы можете использовать следующий код для щелчка:

addItemCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

Для этого вам не нужно реализовывать интерфейс View.OnClickListener.

Надеюсь, это поможет вам.

0 голосов
/ 04 ноября 2019

если вы хотите переопределить onClick, android говорит, что не существует соответствующего метода onClick для переопределения. Это просто означает, что нет глобального onClick, так что нечего переопределять.

Добавьте это к вашей отмене

android:onClick="cancel" 

и чем в коде:

public void cancel(View v){
//test if works        
Log.d(TAG, "cancel: ");
}
...