나는 질문이 생기고 thta가 계속 발생하고 그것을 고치는 방법을 궁금해하고 있습니다. 보기와 상호 작용할 수 있기를 원합니다.이 경우에는 oncreate 외부에서 웹보기를 사용하여 내 메서드가 oncreate에 정의 된 webview와 상호 작용할 수 있도록합니다.안드로이드에서 OnCreate 메소드 외부에서 webview와 상호 작용
다음은 내가 수행하려고 시도하는 예입니다. 검색 음성 배열에서 사용자가 "go"라고 말했는지 확인하기 위해 검사하고, 내가했으면 go 버튼을 누르거나 단순히 go 버튼이 수행 할 코드를 실행하기를 원합니다. 나는 이것에 대해 충분히 설명해 주었으면 좋겠어. 명확한 설명이 필요하면 사전에 알려 줘.
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class web extends Activity {
static final int check = 111;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
final WebView webBrowser = (WebView) findViewById(R.id.webview);
webBrowser.setWebViewClient(new cpViewClient());
webBrowser.getSettings().setJavaScriptEnabled(true);
webBrowser.getSettings().setLoadWithOverviewMode(true);
webBrowser.getSettings().setUseWideViewPort(true);
webBrowser.loadUrl("http://www.google.com");
final InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
Button bGo = (Button) findViewById(R.id.go);
Button bBack = (Button) findViewById(R.id.back);
Button bForward = (Button) findViewById(R.id.forward);
Button bRefresh = (Button) findViewById(R.id.refresh);
Button bClearHistory = (Button) findViewById(R.id.clearhistory);
final EditText etUrl = (EditText) findViewById(R.id.url);
bGo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String enteredUrl = etUrl.getText().toString();
enteredUrl = enteredUrl.toLowerCase();
int len = enteredUrl.length();
/*
* if (enteredUrl.substring(0, 3).equals("www")) enteredUrl =
* "http://" + enteredUrl; else if (enteredUrl.substring(0,
* 11).equals("http://www.")) //Do nothing its perfect
* Log.d("URL", "The Url is fine"); else enteredUrl =
* "http://www." + enteredUrl;
*
* String dot1 = enteredUrl.substring(len-5, len-4); String dot2
* = enteredUrl.substring(len-4, len-3); if (!dot1.equals(".")
* || !dot2.equals(".")) enteredUrl = enteredUrl + ".com";
*/
if (enteredUrl.indexOf("http://") == -1
& enteredUrl.indexOf("www.") == -1) {
enteredUrl = "http://www." + enteredUrl;
} else if (enteredUrl.indexOf("http://") == -1) {
enteredUrl = "http://" + enteredUrl;
}
if (enteredUrl.indexOf(".com") == -1
& enteredUrl.indexOf(".org") == -1
& enteredUrl.indexOf(".net") == -1
& enteredUrl.indexOf(".mil") == -1
& enteredUrl.indexOf(".gov") == -1
& enteredUrl.indexOf(".edu") == -1
& enteredUrl.indexOf(".info") == -1) {
enteredUrl = enteredUrl + ".com";
}
webBrowser.loadUrl(enteredUrl);
etUrl.setText(enteredUrl);
imm.hideSoftInputFromWindow(etUrl.getWindowToken(), 0);
}
});
bBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (webBrowser.canGoBack())
webBrowser.goBack();
}
});
bForward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (webBrowser.canGoForward())
webBrowser.goForward();
}
});
bRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webBrowser.reload();
}
});
bClearHistory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webBrowser.clearHistory();
}
});
Button VR = (Button) findViewById(R.id.webvoice);
VR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getvoice();
}
});
}
public void getvoice() {
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(i, check);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == check && resultCode == RESULT_OK) {
result = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
final TextView tvvoicearray = (TextView) findViewById(R.id.tvvoicearray);
tvvoicearray.setText(result.get(0));
searchvoicearray();
}
super.onActivityResult(requestCode, resultCode, data);
}
public void searchvoicearray() {
// Log.d("DEBUGGINGG",result.get(0));
// System.out.println(result);
int size = result.size();
int i = 0;
while (i < size) {
String s = result.get(i);
// next line removes all spaces in the string
// s= s.replaceAll(" ", "");
if (s.indexOf("go") != -1) {
i = size;
//i want the button go to be pressed or its action to be completed.
if (webBrowser.canGoBack())
webBrowser.goBack();
}
else if (s.indexOf("back") != -1) {
i = size;
if (webBrowser.canGoBack())
webBrowser.goBack();
}
else {
System.out.println(result.get(i) + " is not internet");
Log.d("DEBUGGINGG", result.get(i) + " is not internet");
// }
i++;
}
}
}
ArrayList<String> result = new ArrayList<String>();
}