Получение данных из пакетов в Android - PullRequest
1 голос
/ 26 октября 2011

Итак, мне удалось решить проблему получения информации из пакета, но я должен был сделать что-то, что мне показалось странным. Сначала я попробовал следующий метод:

public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            list = savedInstanceState.getInt("listmenu");
}

И вот как я помещаю информацию в пакет и вызываю действие:

Intent myIntent = new Intent(MainActivity.this, NewActivity.class);
            myIntent.putExtra("listmenu", R.menu.listmenu);
            MainActivity.this.startActivity(myIntent);

Но это не сработало. Он просто вылетел бы в строке 3, список, в котором я пытался получитьInt (я не мог выяснить, почему именно, но это не сработало).

Затем, после некоторого поиска, я попробовал это так:

public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            Bundle extras = getIntent().getExtras();
            list = extras.getInt("listmenu");
}

Мне кажется, что getIntent (). GetExtras () будет просто возвращать saveInstanceState. Но если бы это было так, то мой первый метод сработал бы. Поэтому я должен неправильно понимать, что такое saveInstanceState, или что делает getIntent (), чтобы кто-нибудь мог объяснить, в чем разница между этими двумя вещами?

1 Ответ

2 голосов
/ 26 октября 2011

Пакет передается в onCreate (), если действие уничтожается, а затем воссоздается, т.е. при изменении конфигурации. Если вы хотите поместить данные для сохранения при воссоздании вашей деятельности, вы можете переопределить onSaveInstanceState. Этот пакет будет передан как onCreate, так и onRestoreInstanceState.

Второй блок кода, который вы включили, подходит для чтения пакетов, переданных во вновь запущенные действия. Это проясняет вещи? Лучше всего прочитать описание каждого в Документе Activity.

...