0
我記得只有UI線程可以修改Activity的View,no-UI線程不能修改視圖。 因此,您將在代碼中找到的方法「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();
}
}
您目前沒有從線程調用該方法。在UI線程上調用onItemSelected。 – DeeV
@DeeV onItemSelected()是由ListFragment對象調用的,這個回調函數也在UI線程中? – Michael
是的。這樣的UI操作全部在主線程上執行。 – DeeV