लौटाता है एंड्रॉइड डेवलपर्स संदर्भ में अंतर्निहित व्यू संसाधनों के बीच R.id.progress सूचीबद्ध करता है।findViewById (android.R.id.progress) शून्य
फिर भी, जब मैं जारी (मेरी गतिविधि वर्ग में) बयान:
View pv = getWindow().findViewById(android.R.id.progress);
यह अशक्त देता है।
यह NULL भेजता है तब भी जब मैं ProgressBar
वर्ग के साथ संयोजन के रूप में इसका इस्तेमाल करते हैं:
ProgressBar pv = (ProgressBar) getWindow().findViewById(android.R.id.progress);
और यह अशक्त भी without the getWindow() रिटर्न:
ProgressBar pv = (ProgressBar) findViewById(android.R.id.progress);
किसी भी विचार क्यों?
यकीन है कि मैं मतिभ्रमित नहीं कर रहा हूँ बनाने के लिए, मैं @ Geobits की सलाह का पालन किया और नीचे @ArunGeorge द्वारा सिफारिश की खरोंच से एक नई परियोजना, the blog post में सूचीबद्ध सटीक कोड युक्त बनाया:
package com.droidworks;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;
public class ProgressBarExampleActivity extends Activity {
private ProgressBar mProgress;
private MyThread mBgThread;
private final Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mProgress = (ProgressBar) findViewById(android.R.id.progress);
mBgThread = (MyThread) getLastNonConfigurationInstance();
if (mBgThread == null) {
mBgThread = new MyThread();
mBgThread.start();
}
mHandler.post(mThreadWatcher);
}
@Override
public Object onRetainNonConfigurationInstance() {
return mBgThread;
}
@Override
protected void onPause() {
mHandler.removeCallbacks(mThreadWatcher);
super.onPause();
}
private Runnable mThreadWatcher = new Runnable() {
public void run() {
int progress = mBgThread.getProgress();
mProgress.setProgress(progress);
if (progress != 100)
mHandler.postDelayed(this, 50);
}
};
static class MyThread extends Thread {
private int _progress = 0;
public void run() {
for (; _progress < 100; _progress++) {
try {
Thread.sleep(100);
}
catch (InterruptedException ignored) {
}
}
}
private int getProgress() {
return _progress;
}
}
}
ज़रूर पर्याप्त इस कोड फेंकता एक NullPointerException
:
at com.droidworks.ProgressBarExampleActivity$1.run(ProgressBarExampleActivity.java:44)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
एंड्रॉइड का कौन सा संस्करण? –
क्योंकि आपके पास स्क्रीन पर दिखाई देने वाली आईडी द्वारा कोई दृश्य नहीं है। – FoamyGuy
@ user1260028 Froyo (2.2) @Tim आप "दिखाना नहीं" से क्या मतलब है? क्या इसे 'findViewById()' कॉल के समय दृश्यमान होना चाहिए? – ateiob