当我使用应用程序时,该应用程序在运行时引起错误,这是意图上的错误,但是从我所看到的看,代码中没有错误,它说:
android.content.ActivityNotFoundException: Unable to find explicit activity class .... have you declared this activity in your AndroidManifest.xml?
但是,由于它是一个片段,因此无需在清单中说明,我在它从中产生出来的清单中已经说明了活动。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //I
Intent i = new Intent(ViewAllRecipe.this.getActivity(), EditRecipesFragment.class);
HashMap<String, String> map = (HashMap) parent.getItemAtPosition(position);
String RecId = map.get(Config.TAG_ID).toString();
i.putExtra(Config.REC_ID, RecId);
getActivity().startActivity(i);
}
错误来自:
getActivity().startActivity(i);
它正在膨胀的活动是,其他片段也仅在这一片段上工作良好;
<activity
android:name=".NavigationActivity"
android:label="@string/app_name" >
</activity>
谢谢!
最佳答案
您可以使用此方法从其他活动/片段中调用一个活动
Intent intent = new Intent(context, YourNewActivity.class);
上面的构造函数将使用下面说明的两个参数。
1)。
Context
作为其第一个参数(之所以使用它,是因为Activity
类是Context
的子类)2)。系统应将
Class
传递到的应用程序组件的Intent
(在这种情况下,应启动的活动)但是在您的情况下,第二个参数是
Fragment
,它不依赖于上述语法,而获得ActivityNotFoundException
的原因是因为在此行中Intent i = new Intent(ViewAllRecipe.this.getActivity(), EditRecipesFragment.class);
JVM期望第二个参数是
Activity
类,当在manifest
中找不到任何此类时,它将抛出ActivityNotFoundException
。要从
Fragment
调用Activity
,您必须使用FragmentTransactions