это было лет с момента моего последнего класса Java, не говоря уже никогда не написав JAVA на работе ..java.lang.NullPointerException из DroidGap> OnCreate> setWebChromeClient и ProgressBar реализации
В любом случае, я пытаюсь получить это приложение «Кордова», чтобы отобразить загрузочный виджет на всплывающем экране при выполнении javascript html + начальных вызовов AJAX.
Я воспользовался предложениями от this post, но я ничего не делаю правильно ... appView есть на DroidGap.java источник, поэтому он не может быть пустым. На самом деле я понятия не имею, что здесь указывает на null. Возможно, у меня этот код не в том месте?
Желание у меня было больше времени, чтобы погрузиться в вещи здесь ... если у кого-то есть предложения, я все уши, ну, все глаза в любом случае.
Этот номер pastebin post выглядит так же, как и выше, поэтому я считаю, что код progressbar за пределами onCreate безрезультатен.
package com.Project.MainActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ProgressBar;
import org.apache.cordova.*;
public class MainActivity extends DroidGap
{
final Activity activity = this;
private ProgressBar progessBar1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View footer = View.inflate(getContext(), R.layout.main, root);
root.addView(footer);
progessBar1 = (ProgressBar) findViewById(R.id.progressBar1);
this.appView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
progessBar1.setProgress(progress * 1000);
if(progress < 100 && progessBar1.getVisibility() == ProgressBar.GONE) {
progessBar1.setVisibility(ProgressBar.VISIBLE);
}
progessBar1.setProgress(progress);
if(progress == 100) {
progessBar1.setVisibility(ProgressBar.GONE);
}
Log.d("Progress", progress+"");
}
});
super.setStringProperty("loadingDialog", "Wait, Loading...");
// Set by <content src="index.html" /> in config.xml
super.loadUrl("file:///android_asset/www/index.html");
}
}
Этот код выводит:
05-22 10:13:27.238: E/UpdateReceiver(11872): ACTION_PACKAGE_REMOVED
05-22 10:13:29.988: E/dalvikvm(14200): could not disable core file generation for pid 14200: Operation not permitted
05-22 09:37:01.394: E/AndroidRuntime(13370): FATAL EXCEPTION: main
05-22 09:37:01.394: E/AndroidRuntime(13370): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Project.MainActivity/com.Project.MainActivity.MainActivity}: java.lang.NullPointerException
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1702)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1722)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread.access$1500(ActivityThread.java:124)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:974)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.os.Looper.loop(Looper.java:130)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread.main(ActivityThread.java:3821)
05-22 09:37:01.394: E/AndroidRuntime(13370): at java.lang.reflect.Method.invokeNative(Native Method)
05-22 09:37:01.394: E/AndroidRuntime(13370): at java.lang.reflect.Method.invoke(Method.java:507)
05-22 09:37:01.394: E/AndroidRuntime(13370): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-22 09:37:01.394: E/AndroidRuntime(13370): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-22 09:37:01.394: E/AndroidRuntime(13370): at dalvik.system.NativeStart.main(Native Method)
05-22 09:37:01.394: E/AndroidRuntime(13370): Caused by: java.lang.NullPointerException
05-22 09:37:01.394: E/AndroidRuntime(13370): at com.Project.MainActivity.MainActivity.onCreate(MainActivity.java:48)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-22 09:37:01.394: E/AndroidRuntime(13370): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1666)
05-22 09:37:01.394: E/AndroidRuntime(13370): ... 11 more
Рез/макеты/main.xml ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ProgressBar
android:id="@+id/progressBar1"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:maxHeight="10dip"
android:minHeight="10dip" />
</LinearLayout>
this.appView имеет нулевое значение, но оно не должно быть в запрос super.onCreate (...) как видно here:
313 /**
314 * Create and initialize web container with default web view objects.
315 */
316 public void init() {
317 CordovaWebView webView = new CordovaWebView(CordovaActivity.this);
318 CordovaWebViewClient webViewClient;
319 if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
320 {
321 webViewClient = new CordovaWebViewClient(this, webView);
322 }
323 else
324 {
325 webViewClient = new IceCreamCordovaWebViewClient(this, webView);
326 }
327 this.init(webView, webViewClient, new CordovaChromeClient(this, webView));
328 }
329
330 /**
331 * Initialize web container with web view objects.
332 *
333 * @param webView
334 * @param webViewClient
335 * @param webChromeClient
336 */
337 @SuppressLint("NewApi")
338 public void init(CordovaWebView webView, CordovaWebViewClient webViewClient, CordovaChromeClient webChromeClient) {
339 LOG.d(TAG, "DroidGap.init()");
340
341 // Set up web container
342 this.appView = webView;
343 this.appView.setId(100);
344
345 this.appView.setWebViewClient(webViewClient);
346 this.appView.setWebChromeClient(webChromeClient);
- это 'R.layout.main' макет, содержащий' R.id.progressBar1'? Если это так, попробуйте выполнить поиск в строке выполнения следующим образом: 'progessBar1 = (ProgressBar) footer.findViewById (R.id.progressBar1);' также для ясности, в какой строке 48? – FoamyGuy
строка 48: this.appView.setWebChromeClient (новый WebChromeClient() {[...] – obimod
добавил footer.findViewById (R.id.progressBar1); ... хороший улов! Тем не менее, он жалуется на исключение NullPointerException. – obimod