[英]New dialog activity not starting in Android
我有一個活動,長按列表項時會啟動對話框。 我通過以下代碼片段開始活動:
private void showWifiSettings(int arg2) {
Intent newIntent = new Intent("com.example.searchingwifi.DIALOGACTIVITY");
startActivity(newIntent);
}
並且,新的Dialog活動中的代碼已簽名。
package com.example.searchingwifi;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
public class DialogActivity extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialog, null));
return builder.create();
}
}
長按相應的列表項時,Logcat給我以下錯誤,並且應用程序停止運行。
06-27 12:54:22.150: E/AndroidRuntime(25118): FATAL EXCEPTION: main
06-27 12:54:22.150: E/AndroidRuntime(25118): Process: com.example.searchingwifi, PID: 25118
06-27 12:54:22.150: E/AndroidRuntime(25118): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.searchingwifi/com.example.searchingwifi.DialogActivity}: java.lang.ClassCastException: com.example.searchingwifi.DialogActivity cannot be cast to android.app.Activity
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.os.Handler.dispatchMessage(Handler.java:102)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.os.Looper.loop(Looper.java:136)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-27 12:54:22.150: E/AndroidRuntime(25118): at java.lang.reflect.Method.invokeNative(Native Method)
06-27 12:54:22.150: E/AndroidRuntime(25118): at java.lang.reflect.Method.invoke(Method.java:515)
06-27 12:54:22.150: E/AndroidRuntime(25118): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-27 12:54:22.150: E/AndroidRuntime(25118): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-27 12:54:22.150: E/AndroidRuntime(25118): at dalvik.system.NativeStart.main(Native Method)
06-27 12:54:22.150: E/AndroidRuntime(25118): Caused by: java.lang.ClassCastException: com.example.searchingwifi.DialogActivity cannot be cast to android.app.Activity
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
06-27 12:54:22.150: E/AndroidRuntime(25118): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
06-27 12:54:22.150: E/AndroidRuntime(25118): ... 11 more
誰能幫助我解決錯誤,我在哪里出錯?
編輯:-即使只是開始一個新的對話框活動,系統仍然會給出錯誤。 LogCat如下所示。
06-30 03:54:10.550: E/AndroidRuntime(1175): FATAL EXCEPTION: main
06-30 03:54:10.550: E/AndroidRuntime(1175): Process: com.example.testingdialog, PID: 1175
06-30 03:54:10.550: E/AndroidRuntime(1175): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.testingdialog/com.example.testingdialog.MainActivity}: java.lang.ClassCastException: com.example.testingdialog.MainActivity cannot be cast to android.app.Activity
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.os.Handler.dispatchMessage(Handler.java:102)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.os.Looper.loop(Looper.java:136)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-30 03:54:10.550: E/AndroidRuntime(1175): at java.lang.reflect.Method.invokeNative(Native Method)
06-30 03:54:10.550: E/AndroidRuntime(1175): at java.lang.reflect.Method.invoke(Method.java:515)
06-30 03:54:10.550: E/AndroidRuntime(1175): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-30 03:54:10.550: E/AndroidRuntime(1175): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-30 03:54:10.550: E/AndroidRuntime(1175): at dalvik.system.NativeStart.main(Native Method)
06-30 03:54:10.550: E/AndroidRuntime(1175): Caused by: java.lang.ClassCastException: com.example.testingdialog.MainActivity cannot be cast to android.app.Activity
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
06-30 03:54:10.550: E/AndroidRuntime(1175): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112)
06-30 03:54:10.550: E/AndroidRuntime(1175): ... 11 more
您應該檢查以下內容: http : //developer.android.com/guide/topics/ui/dialogs.html#ShowingADialog
對話與活動不同。
目前您必須擁有
public class MainActivity extends Activity{
...
更改為
public class MainActivity extends FragmentActivity{
...
然后為了顯示對話框,在FragmentActivity中添加此代碼
public void showDialog() {
DialogActivity newDialog = new DialogActivity();
newDialog.show(getSupportFragmentManager(), "myDialog");
}
提示:不要像DialogActivity這樣調用自定義Dialog類,而要像MyCustomDialog這樣調用(不要在類名中使用“ Activity”)
在這里,您將打開DialogFragment。 請嘗試以下代碼。
DialogFragment newFragment = new DialogActivity();
newFragment.show(getFragmentManager(), "dialog");
希望對你有幫助
更新:在這里您設置LayoutInflator而不是視圖。 這就是為什么它給輸入參數錯誤。 請嘗試以下方法:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
View view = getActivity().getLayoutInflater().inflate(R.layout.dialog, null);
builder.setView(view);
return builder.create();
}
}
您正在嘗試啟動實際上是DialogFragment
活動。 將其設置為DialogActivity
並以如下所示的活動開始:
Intent intent=new Intent(getApplicationContext(), DialogActivity.class);
startActivity(intent);
要么
您可以將其僅保留為Dialogragment
,並顯示為dialogfragment,而不是開始新的活動。
例:
MyDialogFragment myDialogFragment = new MyDialogFragment();
myDialogFragment.show(fragManager, "myDialogFragment");
參考鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.