setOnClickListener не работает должным образом - PullRequest
0 голосов
/ 27 мая 2020

Прежде всего, я новичок ie в android.

У меня есть три действия в моем приложении. например, MainActivity, T C и navigation_drawer.

Пользователь входит в MainActivity в начале, указав свое имя, и вводит T C нажатием кнопки (Работает отлично хорошо). Здесь внутри T C есть две кнопки «Согласен», «Не согласен», как показано ниже.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TC">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/agree"
        android:text="Agree"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/not_agree"
        android:text="Do not Agree"
        android:layout_below="@id/agree"/>

</RelativeLayout>

Теперь, если пользователь нажимает Согласен , он должен go до navigation_drawer , и если нажать Не согласен , он должен go вернуться к MainActivity . Код для него:

public class TC extends AppCompatActivity {

    private Button Agree, NotAgree;

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

        Agree = (Button) findViewById(R.id.agree);
        NotAgree = (Button) findViewById(R.id.not_agree);

        Agree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(TC.this, "Agree", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(TC.this, navigation_drawer.class);
                startActivity(intent);

            }
        });

        NotAgree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(TC.this, "Not Agree", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(TC.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

Тост был добавлен, чтобы проверить, был ли вызван правильный метод или нет (и он вызывает правильный метод)

AndroidManifest. xml содержит (я не уверен, поможет ли это):

        <activity android:name=".TC" android:noHistory="true"/>
        <activity android:name=".navigation_drawer" />
        <activity
            android:name=".MainActivity"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Проблема в том, что по какой-то причине независимо от того, какую кнопку я нажимаю, она всегда перенаправляет на navigation_drawer также для обеих кнопок было показано сообщение Toast как и ожидалось.

Я не знаю, что мне здесь не хватает, предложите решение. Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

проверить это:

удалить android:noHistory="true" в Manifest

и после startActivity(....) позвонить finish()

0 голосов
/ 27 мая 2020

Я не вижу ничего плохого в вашем коде и должен работать, но похоже, что вы запускаете действие navigation_drawer при обоих щелчках кнопок.

Поэтому я предлагаю вам объявить и инициализировать обе кнопки Intent переменные вне блока setOnClickListner(), присвоив каждой Intent переменным разные имена, такие как intent1 и intent2, и попробуйте запустить его снова.

...