我一直想着如何在点击ListActivity中的一行时整天弹出一个webview。点击它时我甚至无法显示Toast。需要帮助
对于想要学习的网络开发人员Android,我还是新手。谢谢。
包com.mf.ar;
import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;
import android.app.Activity; import android.app.AlertDialog; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.Window; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ArrayAdapter; import android.widget.Toast;
公共类ListViewer扩展了ListActivity { private String mJSON; private String [] listRows; private String [] listRowsURI;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.listview);
Bundle the = getIntent().getExtras();
this.mJSON = the.getString("JSON");
Log.i("ListViewIntentJSON", this.mJSON);
try {
JSONObject UrbJSON = new JSONObject(mJSON);
JSONObject UrbQuery = UrbJSON.getJSONObject("query");
int rows = UrbQuery.getInt("row");
Log.i("UrbRows", String.format("%d",rows));
JSONArray resultArray = UrbJSON.getJSONArray("result");
this.listRows = new String[rows];
for(int i=0; i<rows; i++) {
this.listRows[i] = resultArray.getJSONObject(i).
getString("business_name").toString();
}
this.listRowsURI = new String[rows];
for(int i=0; i<rows; i++) {
this.listRowsURI[i] = resultArray.getJSONObject(i).
getString("business_uri_mobile").toString();
}
} catch(JSONException e) {
e.printStackTrace();
}
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ListViewer.this.listRows));
}
@Override
protected void onListItemClick(android.widget.ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String theURI = ListViewer.this.listRowsURI[position].toString();
/*String theURI = ListViewer.this.listRowsURI[position].toString();
//String theURI = "http://www.mediafusion.web.id";
WebView webview = new WebView(this);
//setContentView(webview);
//addContentView(webview, null);
webview.getSettings().setJavaScriptEnabled(true);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
final Activity activity = this;
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
activity.setProgress(progress * 1000);
}
});
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
});
webview.loadUrl(theURI);*/
Toast.makeText(ListViewer.this.getApplicationContext(), theURI, Toast.LENGTH_SHORT);
}
}
答案 0 :(得分:0)
删除代码中出现的所有getApplicationContext()
,事情会对您有所帮助。 ListViewer
是Context
- 只需在Toast
中使用它。
关于WebView
,我认为您可以更好地制作自己的活动并从{{1}}启动该活动。