2014-05-07 18 views
12

Mamy przycisk w HTML. Kiedy użytkownik go kliknie, wartość mojej konkretnej EditText powinna ulec zmianie, ale tak się nie dzieje.Jak zmienić zawartość EditText za pomocą JavaScript?

Kod:

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); 
     } 
    } 
} 
+0

Ok, jaki jest problem? – esqew

+0

edycja treści tekstowej nie zmieni się ... – hosseinAmini

+0

to jest javaScript? – STEEL

Odpowiedz

1

Nie można zmienić jakiś rodzimy widok z dowolnym języku JavaScript (w oparciu internetowej), nie ma API JS.

Nie można uzyskać dostępu do widoków i mniej zmienić jego właściwości.

Możesz zrobić wszystko na webView, jeśli masz pewność, że przeglądarka internetowa działa lepiej niż java. Załaduj swoją sieć i pokaż tam etykietę, a następnie wszystko możesz zmienić za pomocą JS.

Edit: można wstrzykiwać lub metody z JS zadzwonić z tego API jak mówi Bob.

Mam nadzieję, że to pomoże.

+0

To nie jest w 100% poprawne ... zobacz WebView.addJavascriptInterface: http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String % 29 – Bob9630

+0

@ Bob9630 masz rację, zredagowałem swoją odpowiedź, aby mi poprawić, nie wiedziałem, kiedy odpowiedziałem na to pytanie. – Sulfkain

1

Zakładając, że twoja część html jest poprawna, jedną rzeczą, którą musisz zrobić, to wywołanie ui w głównym wątku.

tak kod:

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

powinny być

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