gpt4 book ai didi

android - 调用 setDisplayChild() 时 View 翻转器崩溃;在准备好添加javascript接口(interface)的文档上,请帮助

转载 作者:行者123 更新时间:2023-12-03 17:47:32 24 4
gpt4 key购买 nike

我正在构建一个应用程序项目(我的第二个),可以说,它在等待带有 webview 的第二个 viewflipper 布局以加载网页时显示一个启动加载屏幕。加载时的 html 网页调用我的 android java 中的一个函数,该函数应该 vf.setDisplayedChild(TWO);但它没有!我已经用 toast 而不是上述功能测试了这个?!这显示得很好。但是,如果我将其设置回displaychild,我的加载屏幕崩溃并返回到我的main.xml Activity ,然后使用viewflipper 重新启动 Activity 并在崩溃和重新加载之间循环!

我怀疑这与我在 oncreate 函数中的 vf 控件和 vf.displaychild 有关。在公共(public)场合打电话javascriptinterface类(class)??!!!但没有知识做更多。

我研究了某种 bool 变化监听器,但不认为这是值得做的。

我的代码:

package com.......;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Toast;
import android.widget.ViewFlipper;


public class Webview extends Activity {


ViewFlipper vf;
private final int ONE = 0;
private final int TWO = 1;
private WebView webView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.vf);

vf=(ViewFlipper)findViewById(R.id.flipper);
vf.addView(View.inflate(this, R.layout.load, null), ONE);
vf.addView(View.inflate(this, R.layout.webview, null), TWO);
vf.setDisplayedChild(ONE);



webView = (WebView) findViewById(R.id.webView1);

webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setBuiltInZoomControls(false);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setSupportZoom(false);
webView.addJavascriptInterface(new JSI(this), "android");
webView.loadUrl("my wamp dir");

//failsafe if not shown
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Sorry There was a problem!\nPlease check your Data/WI-FI connection.", Toast.LENGTH_SHORT).show();
finish();
}
}, 30000);




}



public class JSI
{
Context mContext;

/** Instantiate the interface and set the context */
JSI(Context c) {
mContext = c;
}

public void loaded()
{

vf.setDisplayedChild(TWO);
//Toast.makeText(mContext, "Showing!", Toast.LENGTH_SHORT).show();

}
}

}

当然,该函数在 jquery/script ready 函数中调用为:
android.loaded();

对答案的任何帮助表示赞赏!

编辑 - - - - - - - - - - - - -
已经找到了调试器,并且收到了一个异常:只有一个线程可以访问它的设置 View !

最佳答案

啊我不知道runOnUiThread()这排序了!

public void Activated()
{
runOnUiThread(new Runnable() {

@Override
public void run() {
vf.setDisplayedChild(TWO);
}
});

只是注意到我忘记停止我的处理程序延迟执行,如果语句变量错误检查我认为。

关于android - 调用 setDisplayChild() 时 View 翻转器崩溃;在准备好添加javascript接口(interface)的文档上,请帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com