当用户触摸AlertDialog
内的确定按钮时,尝试让我的应用返回主要活动。
我显示的警告对话框基本上是一条错误消息,告知用户没有找到他们选择的特定日期的数据,并且在不是主要活动的活动中调用,但是我希望它们在发送回主要活动时被发送回主要活动。他们点击确定。
这个电话运行正常,只是因为它似乎不知道如何找到主要活动,即使我正在使用的电话在任何正常活动中都有效。
我得到的error
是:
1554-1554/org.springframework.android.showcase2 E/AndroidRuntime﹕ FATAL EXCEPTION: main
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=org.springframework.android.showcase2.MainActivity }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
特定的AlertDialog代码是:
package org.springframework.android.showcase2;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyAlertDialogFragment extends DialogFragment {
private String title;
private String message;
private TextView tvError;
public MyAlertDialogFragment(String sTitle, String sMessage){
this.title = sTitle;
this.message = sMessage;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle(this.title)
.setMessage(this.message)
.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// This is the way I nomally call a new activity inside other activities but seems to not work inside this AlertDialog scope
Intent i = new Intent("org.springframework.android.showcase2.MainActivity");
startActivity(i);
}
}
)
.create();
}
}
答案 0 :(得分:4)
代码行
// This is the way I nomally call a new activity inside other activities but seems to not work inside this AlertDialog scope
Intent i = new Intent("org.springframework.android.showcase2.MainActivity");
startActivity(i);
不正确。
当您说new Intent("org.springframework.android.showcase2.MainActivity")
时,表示您正在处理可以处理"org.springframework.android.showcase2.MainActivity"
操作的活动。
但在您的情况下"org.springframework.android.showcase2.MainActivity"
代表Activity
而非Action
。
所以使用
Intent i = new Intent(getActivity(), org.springframework.android.showcase2.MainActivity.class);
startActivity(i);
您应该阅读How to start an Activity和 Start an activity from a fragment 。
答案 1 :(得分:1)
你错了。你需要将上下文传递到Intent
Intent i = new Intent(getActivity(),"org.springframework.android.showcase2.MainActivity");
startActivity(i);
执行此操作时:
Intent in = new Intent(getActivity(), SecondActivity.class);
您正在创建显式意图,指定组件 SecondActivity 。此方法的签名为Intent(Context packageContext, Class clas)
。它使用packageContext
中的包名称和class
中的clas
名称来为该组件创建显式Intent。如果在Activity中使用此构造函数,则可以将其用作第一个参数,因为Activity扩展了Context
。如果您从另一个类(如OnClickListener
)使用此构造函数,则需要指定MyActivity.this
作为传递Activity实例而不是OnClickListener
的第一个参数(因为{{ 1}}不扩展Context。。