在我的应用程序中,我在 menuitemclicked 中添加了 Observable 方法,但当我单击它两次时它正在工作。在单按。方法不起作用,但按钮工作正常对此有任何建议或方法有任何更改。
case R.id.upload:
获取() 休息;
io.reactivex.Observable fetchObservable() {
return io.reactivex.Observable.create(new ObservableOnSubscribe<Data>() {
@Override
public void subscribe(ObservableEmitter<Data> emitter) throws Exception {
try {
final Cursor cursor = getActivity().getContentResolver().query(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{"display_name", "data1"}, null, null, null);
// final Map contact =new HashMap();
while (cursor.moveToNext()) {
Data data = new Data();
try {
String name = cursor.getString(cursor.getColumnIndex(Display_name));
String number = cursor.getString(cursor.getColumnIndex(Data1));
data.setContact_name(name);
data.setNumber(number);
Thread.sleep(60);
emitter.onNext(data);
} catch (Exception e) {
Toast.makeText(context, "not insert , Toast.LENGTH_SHORT).show();
}
}
emitter.onComplete();
}catch (Exception e){
emitter.onError(e);
}
}
});
//获取方法代码
void fetch(){
fetchObservable().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @覆盖 public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Data data) {
data.Contact_name=data.getContact_name();
data.number=data.getNumber();
String name= data.Contact_name;
String number= data.number;
}
count++;
textprogress.setText(String.valueOf(count));
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
最佳答案
因为你没有在主线程中运行你的 UI 像这样
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
textprogress.setVisibility(View.VISIBLE);
textprogress.setVisibility(View.VISIBLE);
}
});
关于android - 为什么 Observable.create() 在单击时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52351705/