Проблема с кнопками переключения на RecyclerView: решена - PullRequest
0 голосов
/ 01 октября 2019

Я новичок в разработке Android и надеюсь, что вы мне поможете. У меня есть один RecyclerView, с каждым просмотром карты, показывающим одно изображение, два просмотра текста и одну кнопку переключения. Это приложение для меня, и я хотел организовать сбор своих карточек таким образом, чтобы у меня была возможность сообщить мне, есть ли у меня карточка или нет, поэтому я хотел обновить базу данных с 1, если она отмечена, или с 0, если онане. Я пытался проверить кнопки с тостом, но я получаю сообщение об ошибке. Вот код:

aSwitch = (Switch) findViewById(R.id.switch1);
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
          if (isChecked == true) {
               Toast.makeText(StockActivity.this, "On", Toast.LENGTH_SHORT).show();
          } else {
               Toast.makeText(StockActivity.this, "Off", Toast.LENGTH_SHORT).show();
          }
    }
});

Это мой код для кнопки переключения, я думал, что это нормально, но я получил ошибку:

java.lang.RuntimeException: Невозможноначать действие ComponentInfo {com.example.battlespiritsdb / com.example.battlespiritsdb.StockActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.Switch.setOnCheckedChangeListener (android.wid) (android.w). нулевая ссылка на объект

Ошибка указывает на первую строку setOnCheckedChangeListener, и я не знаю почему, это потому, что я использую их в RecyclerView или что-то в этом роде?

Спасибоза помощь!

PS: Это отлично работает, я только что понял, что использую его в неправильном классе, поэтому, как говорили некоторые из вас, кнопка переключателя продолжала указывать на нулевой объект. Спасибо за помощь! Когда-нибудь я перестану делать эти ошибки новичка, я думаю ...

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Вы можете попробовать этот snippet кода.

switchButton = (Switch) findViewById(R.id.switch1);
switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {

            if (isChecked) {
                 // if 'isChecked' is true do whatever you need...
                 // To show a toast use only 'this' (for activity) or 'getActivity()'
                 // (for fragment) nothing else.
                 Toast.makeText(this, "On", Toast.LENGTH_SHORT).show(); // or getActvity()
            } else {
                 Toast.makeText(this, "Off", Toast.LENGTH_SHORT).show(); // or getActvity()
            }
        }
    }
});

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

0 голосов
/ 01 октября 2019
@Kinda --Try This code
sw1 = (Switch)findViewById(R.id.switch1);
        sw2 = (Switch)findViewById(R.id.switch2);
        btnGet = (Button)findViewById(R.id.getBtn);
        btnGet.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str1, str2;
                if (sw1.isChecked())
                    str1 = sw1.getTextOn().toString();
                else
                    str1 = sw1.getTextOff().toString();
                if (sw2.isChecked())
                    str2 = sw2.getTextOn().toString();
                else
                    str2 = sw2.getTextOff().toString();
                Toast.makeText(getApplicationContext(), "Switch1 -  " + str1 + " \n" + "Switch2 - " + str2,Toast.LENGTH_SHORT).show();
            }
        });
    }`enter code here`
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...