当我使用应用程序时,应用程序在运行时导致错误,这是意图中的错误,但代码中没有错误,我所看到的,它说:
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>
谢谢!
答案 0 :(得分:1)
您可以使用此
从不同的活动/片段中调用一个活动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
答案 1 :(得分:0)
这条线对我来说是个错误:
Intent i = new Intent(ViewAllRecipe.this.getActivity(), EditRecipesFragment.class);
您不能对Fragment类使用startActivity。 startActivity仅适用于清单中注册的Activity子类。
如果您有一个要在活动中显示的片段,则需要找到该活动的容器视图,并通过FragmentManager使用FragmentTransaction为该活动安排片段到变得可见。