Кнопка не видна в основной деятельности - PullRequest
1 голос
/ 03 мая 2020

Я создал три кнопки в основной деятельности. я использовал следующий код для кнопки 1

`btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn.setVisibility(GONE);
btn1.setVisibility(GONE);
btn2.setVisibility(GONE);
FragmentManager fm = getSupportFragmentManager();
TestFragment fragment = new TestFragment();
fm.beginTransaction().add(R.id.fragment_container,fragment).addToBackStack(null.commit();`

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

Ответы [ 3 ]

1 голос
/ 03 мая 2020

Если вы нажмете кнопку «Назад», вы вернете свою активность назад, но вы уже установили видимость кнопок как «Унесенные», поэтому вы не можете видеть эти кнопки. Вы должны обработать кнопку «Назад» и снова установить видимость кнопок как «Видимый».

public class MainActivity extends AppCompatActivity {

    Button btn, btn1, btn2;

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

        btn = findViewById(R.id.btn);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn.setVisibility(GONE);
                btn1.setVisibility(GONE);
                btn2.setVisibility(GONE);
                FragmentManager fm = getSupportFragmentManager();
                TestFragment fragment = new TestFragment();
                fm.beginTransaction().add(R.id.fragment_container, fragment).addToBackStack(null).commit();
            }
        });
    }
    //Handle your Back Button with onKeyDown method.
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Check for if Back Button is pressed. If pressed do below:
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            onBackPressed(); //Return your activity back.
            btn.setVisibility(View.VISIBLE);  //Set your btn's visibility as Visible.
            btn1.setVisibility(View.VISIBLE); //Set your btn1's visibility as Visible.
            btn2.setVisibility(View.VISIBLE); //Set your btn2's visibility as Visible.
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
0 голосов
/ 03 мая 2020

вы должны использовать шину событий. он используется для передачи данных от фрагмента к действию.

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

это ссылка для шины событий: = EventBus

Happy Coding

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

Вы установили их видимость на УТВЕРЖДЕН , поэтому, если вы хотите получить их снова, вы должны установить их видимость на VISIBLE

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