Android活动强制关闭问题
Android活动强制关闭问题,android,progressdialog,logcat,Android,Progressdialog,Logcat,在此处输入代码我正试图在我的Android应用程序中设置一个进度对话框,但遇到了一些问题。我是Android新手,因此我将遵循本教程: 当我在手机上测试我的应用程序时,它只会强制关闭。 有人能帮忙吗? 下面是我的.Java活动: public class XXXXXActivity extends Activity { private ProgressDialog progressDialog; /** Called when the activity is first created. *
在此处输入代码
我正试图在我的Android应用程序中设置一个进度对话框,但遇到了一些问题。我是Android新手,因此我将遵循本教程:
当我在手机上测试我的应用程序时,它只会强制关闭。
有人能帮忙吗?
下面是我的.Java活动:
public class XXXXXActivity extends Activity {
private ProgressDialog progressDialog;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView myWebView=(WebView)findViewById(R.id.webview);
myWebView.addJavascriptInterface(new JavaScriptInterface(this),"Android");
WebSettings websettings =
myWebView.getSettings();
websettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("http://XXXXX.com");
}
private void runDialog(final int seconds)
{
progressDialog = ProgressDialog.show(this, "Please wait...", "Loading...");
new Thread(new Runnable(){
public void run(){
try {
Thread.sleep(seconds * 1000);
progressDialog.dismiss();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context*/
JavaScriptInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page*/
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
view.loadUrl(url);
if
(Uri.parse(url).getHost().equals("XXXXX.com")) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent=new
Intent (Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);
return true;
}
}
日志:
[2012-04-13 19:44:55 - XXXXX] ------------------------------
[2012-04-13 19:44:55 - XXXXX] Android Launch!
[2012-04-13 19:44:55 - XXXXX] adb is running normally.
[2012-04-13 19:44:55 - XXXXX] No Launcher activity found!
[2012-04-13 19:44:55 - XXXXX] The launch will only sync the application package on the device!
[2012-04-13 19:44:55 - XXXXX] Performing sync
[2012-04-13 19:44:55 - XXXXX] Automatic Target Mode: Preferred AVD 'MY-PHONE' is not available. Launching new emulator.
[2012-04-13 19:44:55 - XXXXX] Launching a new emulator with Virtual Device 'MY-PHONE'
[2012-04-13 19:45:08 - Emulator] emulator: WARNING: Unable to create sensors port: Unknown error
[2012-04-13 19:45:08 - XXXXX] New emulator found: emulator-5554
[2012-04-13 19:45:08 - XXXXX] Waiting for HOME ('android.process.acore') to be launched...
[2012-04-13 19:46:05 - XXXXX] emulator-5554 disconnected! Cancelling 'sync'!
我看到一个问题:您在非gui线程中关闭对话框:
new Thread(new Runnable(){
public void run(){
try {
Thread.sleep(seconds * 1000);
progressDialog.dismiss();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
这段代码非常奇怪,我认为你应该重写逻辑。请发布你的logcat输出。这不应该是问题,因为他没有在代码中的任何地方调用runDialog函数。@AlexKlimashevsky你能找到一个链接或什么东西来重写代码吗?正如我在问题中所说,我是Android新手。@SaneeshCS我需要在代码中调用runDialog函数吗?正如我在问题中所说,我对安卓系统是新手。此外,这是所有的教程告诉我这样做,我想知道这家伙是否遗漏了什么?你可以发布你的logcat输出。如果你想显示progressbar,你必须调用runDialog函数。在这样做之前,找出你为什么要接近原力。希望您已在清单中声明此活动。