2015-06-09 2 views
0

Я помню, что только пользовательский интерфейс может изменять вид деятельности, нить-UI Thread не может изменить представление. Значит ли метод «replace()», который вы найдете в коде, является безопасностью потока? ? Если код правильный, почему этот метод может сделать это (спасибо)ли Android FragmentTransaction.replace() - безопасность потоков?

Это код:

public class SelectBookActivity extends Activity implements BookListFragment.Callbacks { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // inflate a ListFragment and a container setContentView(R.layout.activity_book_twopane); } // the method in the interface @Override public void onItemSelected(Integer id) { Bundle arguments = new Bundle(); arguments.putInt(BookDetailFragment.ITEM_ID, id); BookDetailFragment fragment = new BookDetailFragment(); fragment.setArguments(arguments); getFragmentManager().beginTransaction() .*replace*(R.id.book_detail_container, fragment) .commit(); } }

+0

Вы в настоящее время не вызываете метод из потока. onItemSelected вызывается в потоке пользовательского интерфейса. – DeeV

+0

@DeeV onItemSelected() вызывается объектом ListFragment, этот обратный вызов также находится в потоке пользовательского интерфейса? – Michael

+0

Да. Все действия UI выполняются в основном потоке. – DeeV

ответ

1

Метод commit() Планирует совершить такую ​​сделку. Конец не происходит немедленно; это будет запланировано, поскольку работа над основным потоком будет выполнена в следующий раз, когда поток будет готов.

 Смежные вопросы

  • Нет связанных вопросов^_^