如何使用Javascript更改EditText的内容?

12

我们在HTML中有一个按钮。当用户点击它时,我的特定EditText的值应该更改,但是它没有更改。

代码:

class ActivityTest extends Activity {

    TextView textView1;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        WebView webView = (WebView) findViewById(R.id.webView);
        webView.loadUrl("file:///android_res/raw/htmlimages.html");
        webView.addJavascriptInterface(new MyTest(), "Scripts");
        webView.getSettings().setJavaScriptEnabled(true);
        textView1 = (TextView) findViewById(R.id.textView1);
    }


    public class MyTest {

        void setText(String string) 
        {
            textView1.setText(string);
        }
    }
}

好的,问题是什么? - esqew
不更改编辑文本内容... - hosseinAmini
在textView1.setText("hossein");中硬编码数值,并测试它。 - rjdmello
你在按钮的点击监听器中调用了 setText 吗? - user3241019
2个回答

1
假设你的HTML部分是正确的,那么你需要做的一件事是在主线程上进行UI调用。
因此,你的代码应该是这样的:
void setText(String string) 
{
   textView1.setText(string);
}

应该是


@JavascriptInterface
public void setText() {
  runOnUiThread(new Runnable() {            
     @Override
     public void run() {
        textView.setText("Testing text");       
     }
  });       
}

1

你无法使用JavaScript(或任何基于web的语言)更改一些本机视图,因为没有JS的API。

你不能访问视图,也不能更改其属性。

如果你对web比java更有信心,你可以在webView上做任何事情。加载你的网页并显示标签,然后你可以使用JS更改所有内容。

编辑: 正如Bob所说,你可以使用此API注入或调用JS中的方法。

希望这可以帮助你。


这并不是100%正确的...请参考WebView.addJavascriptInterface: http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29 - Bob9630
@Bob9630 你说得对,我修改了我的回答,谢谢你纠正我,当时回答这个问题的时候我不知道。 - Sulfkain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接