在我的newInstance
中我要创建一个线程,然后将文件从外部存储器复制到内部存储器并对其进行处理。之后,我想通知我的片段更新。我怎么能这样做?
首先:没有context
所以我无法在broadcast
内拨打thread
。
第二:由于尚未调用getActivity is null
方法,因此尚无活动onCreate
,因此runOnUiThread
不起作用。
public class PageFragment extends Fragment {
public static PageFragment newInstance(int pageNumber){
Bundle args = new Bundle();
args.putInt(EXTRA_PAGENUMBER, pageNumber);
PageFragment fragment = new PageFragment();
fragment.setArguments(args);
new Thread(new Runnable() {
@Override
public void run() {
// call fragment to update
}).start();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
答案 0 :(得分:1)
我希望在调用片段时你必须要调用这个
PageFragment fragment = PageFragment.newInstance(pageNumber);
只需将其更改为
即可PageFragment fragment = PageFragment.newInstance(pageNumber, YourActivity.this);
在PageFragment中,您将获得活动的参考资料
public class PageFragment extends Fragment {
public static PageFragment newInstance(int pageNumber, Context ctx){
Bundle args = new Bundle();
args.putInt(EXTRA_PAGENUMBER, pageNumber);
PageFragment fragment = new PageFragment();
fragment.setArguments(args);
final Context context = ctx;
new Thread(new Runnable() {
@Override
public void run() {
// use ctx here
}).start();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
答案 1 :(得分:0)
如果Activity
回调中的onAttached()
,您需要获取该实例。在调用onResume()
的{{1}}之前,请不要启动后台线程。在此之前,您的片段未处于运行状态。