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

У меня есть два действия

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

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

Это мое первое действие

...
    @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 ]

4 голосов
/ 20 сентября 2010

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

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);
1 голос
/ 20 сентября 2010

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

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

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

i.putExtra("reloadContent", true);

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

...