Android; Как я могу инициализировать состояние в одном действии, а затем сделать другое обновление?

У меня два занятия

Первый получает данные от контент-провайдера и отображает их

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

Это мое первое занятие

...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setContentView(R.layout.contactsview);
            // Grab data and put it onto screen
                getDataAndPutToUI();
    }

    @Override
    public void onStart()
    {
       //Refresh data
           getDataAndPutToUI();
    }
...

И это мое второе занятие

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.optionsview);

        Button button = (Button) findViewById(R.id.intentButton);
            button.setOnClickListener(this);

    }   

    // This is bound to the "refresh" button
    @Override
    public void onClick(View v) {
        // Call first activity, to reload the contacts
        Intent i = new Intent(this, FirstActivity.class);
        startActivity(i);

    }

Это правильный способ реализации такой функциональности? Это неправильно, но я не могу определить причины для резервного копирования своих претензий

2 ответа

Решение

Это зависит от того, какое поведение вы ищете. Как вы уже реализовали, первая активность будет обновляться каждый раз, когда она отображается пользователю. Например, если пользователь нажал кнопку "Домой" во время первого занятия, а затем вернулся к первому занятию, нажав и удерживая кнопку "Домой", то первое занятие обновит его данные.

Если это то, что вы хотите, то вы делаете это правильно.

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

i.putExtra("reloadContent", true);

Затем проверьте это дополнительно в методе onStart.

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

Intent i = new Intent();
                            i.setClass(this, Rss_Feed.class);
//                          i.setClass(Rss_Feed.this, Bru_Maps.class);
                            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Другие вопросы по тегам