Java - жарко, чтобы иметь только 1 кнопку для переключения назад и вперед вместо двух кнопок? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть 1 кнопка для изменения изображения и текста. Я хотел сделать ту же кнопку, чтобы, если я снова нажму, она снова сменила изображение и текст. Тем не менее, «TextView» и «ImageView» в коде Java сказали бы мне, я уже определил. Поэтому, я думаю, я не могу переопределить их в пределах 1 кнопки.

В итоге я создал 2 кнопки: 1 для изменения и 2 для возврата назад. Как я могу просто иметь одну кнопку, чтобы изменить и вернуть изображения и текст? ПОМОГИТЕ!

    package com.example.android.cookies;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}



/**
 * Called when the cookie should be eaten.
 */
public void eatCookie(View view) {
    // TODO: Find a reference to the ImageView in the layout. Change the image.
    ImageView imageView = (ImageView) 
findViewById(R.id.android_cookie_image_view);
    imageView.setImageResource(R.drawable.after_cookie);

    // TODO: Find a reference to the TextView in the layout. Change the text.
    TextView textView = (TextView) findViewById(R.id.status_text_view);
    textView.setText("Im so full");
}

public void returnCookie(View view) {
    ImageView imageView = (ImageView) 
findViewById(R.id.android_cookie_image_view);
    imageView.setImageResource(R.drawable.before_cookie);
    TextView textView = (TextView) findViewById(R.id.status_text_view);
    textView.setText("I'm so hungry");
}
}

Before

![after] 2

Ответы [ 2 ]

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

Вы пытались использовать статическую переменную для отслеживания текущего отображаемого изображения? Статический означает, что он будет поддерживать свое состояние между вызовами функций. Затем переключайте его каждый раз, когда вызывается функция. Первоначальное объявление будет вызываться только один раз.

static Boolean eaten = false;
0 голосов
/ 05 мая 2018

Я написал хорошо поддерживаемый код для вас. Вы можете сохранить текущее состояние. Я не рекомендую boolean. Потому что если вы берете int, вы можете сохранить больше состояний в будущем, тогда как в boolean вы можете сохранить только два состояния - true или false.

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {
    ImageView imageView;
    TextView textView;
    Button button;


    final int STATE_HUNGRY = 1;
    final int STATE_FULL = 2;
    int currentState = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.android_cookie_image_view);
        textView = (TextView) findViewById(R.id.status_text_view);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (currentState) {
                    case STATE_FULL:
                        returnCookie();
                        break;
                    case STATE_HUNGRY:
                        eatCookie();
                        break;
                    default: // used when there is no state available
                        eatCookie();
                }
            }
        });
    }

    public void eatCookie() {
        currentState = STATE_FULL;
        imageView.setImageResource(R.drawable.after_cookie);
        textView.setText("Im so full");
    }

    public void returnCookie() {
        currentState = STATE_HUNGRY;
        imageView.setImageResource(R.drawable.before_cookie);
        textView.setText("I'm so hungry");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...