Как использовать оператор Drawable в If / else для setImageResource? - PullRequest
0 голосов
/ 03 марта 2019

Я новичок в androidstudio и хочу сравнить imageView следующим образом:

У меня есть 2 imageView, оба используют drawable, который я назвал "blank" в начале приложения, используя if /иначе я хочу переместить эти изображения в другую имеющуюся у меня схему, я попробовал следующее:

private ImageView equipament1;
private ImageView equipament2;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


public void sentImg() {
    if (equipament1.equals(R.drawable.blank)){
  equipament1.setImageResource(R.drawable.reactor);
}
else if (equipament2.equals(R.drawable.blank)){
  equipament2.setImageResource(R.drawable.reactor);
} else  {finish();}

, но это не работает, приложение просто заменяет первое изображение, и если я снова нажимаю на кнопку,ничего не происходит (это если / else находится внутри кнопки).

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

Я делаю это, потому что я создаю программу, похожую на LucidChart, в которую вы помещаете свое оборудование в приложение.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Когда пользователь нажимает на вашу кнопку, вы хотите сделать 2 вещи.Вы хотите показать несколько изображений или позвонить finish().

. Я бы предложил использовать boolean в качестве флага состояния и сравнить его вместо сравнения самого ImageView.Это будет проще, и ваш код будет легче читать.

Я создал флаг с именем firstClick, который по умолчанию установлен на true.Когда пользователь нажимает вашу кнопку (button1 в этом примере), мы проверяем это и показываем изображения.Затем мы устанавливаем значение false, поэтому следующий щелчок вызовет finish().

private ImageView equipament1;
private ImageView equipament2;

// The current state of the Activity
private boolean firstClick = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


    // Setting your OnClickListener
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if( firstClick ) {
                firstClick = false;
                sentImg();
            } else {
                finish();
            }
        }
    });
}

public void sentImg() {
    equipament1.setImageResource(R.drawable.reactor);
    equipament2.setImageResource(R.drawable.reactor);
}
0 голосов
/ 03 марта 2019

Проблема в том, что во второй раз вы уже изменили значение компаратора.

Если целью является просто изменение изображений, вам не нужно if / else.

private ImageView equipament1;
private ImageView equipament2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


public void sentImg() {
    equipament1.setImageResource(R.drawable.reactor);
    equipament2.setImageResource(R.drawable.reactor);
}
...