Android中的“找不到活动”

Posted

技术标签:

【中文标题】Android中的“找不到活动”【英文标题】:"Activity not found" in Android 【发布时间】:2015-05-26 10:41:52 【问题描述】:

我在eclipse中使用navigation-drawer模板做一个简单的android应用。 我在片段方面遇到了一些麻烦。 我在清单中声明了一个名为 PresenceLog Fragment 的片段,但是当我在 MainActivity 中调用它时,日志仍然显示

03-23 13:54:50.817: E/AndroidRuntime(16750): android.content.ActivityNotFoundException: Unable to find explicit activity class com.singtel.ricecooker/com.singtel.ricecooker.PresenceLogFragment; have you declared this activity in your AndroidManifest.xml?

这是我的清单

这是我的片段类

public class PresenceLogFragment extends Fragment
private TextView myText = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 

    return inflater.inflate(R.layout.presence_log, null);


@Override
public void onViewCreated(View view, Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    ArrayList<String> userList = null;
    RiceServerRequest newRequest = new RiceServerRequest();
    //newRequest.getRequestInfo(this);



public void updateUserList(ArrayList<String> userList)
    LinearLayout lView = (LinearLayout) getView().findViewById (R.layout.presence_log);
    //LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);

    for (int i = 0; i < userList.size();i++)
        myText = new TextView(getActivity());
        myText.setText(userList.get(i));
        lView.addView(myText);
    
    //setContentView(lView);

这是我的 MainActivity

private void launchPresenceLog()
    Intent intent = new Intent(this,PresenceLogFragment.class);
    startActivity(intent);

如果您知道我的代码有什么问题,那就太好了。另外,由于我是 Android 编程新手,如果您能推荐一些在线课程,我将不胜感激。

【问题讨论】:

您没有在清单文件中添加添加的活动 课程:udacity.com/course/ud853 @ashutiwari4 他正在尝试使用 INTENT 作为 ACTIVITY 来启动 FRAGMENT。这是完全错误的,参考developer.android.com/training/basics/fragments/creating.html @LittleChild 谢谢推荐,不胜感激 @EpicPandaForce 是的,我刚刚意识到这一点。我想把之前写的Activity改成Fragment,忘记改这部分了。另外,你知道 setContentView for Fragment 的等价物是什么吗(我想在向服务器请求信息时更新页面)? 【参考方案1】:

您已经创建了一个 Fragment,因此您不能像 Activity 一样调用它。 你需要用你的 Fragment 替换一个容器视图,正确的 FrameLayout。

getSupportFragmentManager()
  .beginTransaction()
  .replace(R.id.content_frame, new PresenceLogFragment())
  .commit();

【讨论】:

【参考方案2】:

您不能通过 Intent 加载片段。您必须以这种方式使用片段管理器:

Fragment fragment = new PresenceLogFragment(MainActivity.this);
FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction ft = fragmentManager.beginTransaction();                
            ft.replace(R.id.yourFragmentContainer, fragment).commit();

【讨论】:

【参考方案3】:
 have you declared this activity in your AndroidManifest.xml?  

查看您的清单,看看您是否有一个 &lt;activity&gt; 元素已注册您的活动。如果没有,请添加一个。

看看这里:http://developer.android.com/guide/topics/manifest/activity-element.html

【讨论】:

【参考方案4】:

很清楚。

“您是否在 AndroidManifest.xml 中声明了此活动?”

你应该检查是否有标签。

see this 或maybe this

【讨论】:

【参考方案5】:

请打开清单文件并声明如下:

<activity
        android:name=".MainActivity" //your activity name
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

如果这是您的 lauch 活动,则执行此操作,否则执行此操作

<activity
        android:name=".MainActivity"//your activity name
        android:label="@string/app_name" >
    </activity>

键入扩展 Activity 而不是 Fargment 的 java 文件的名称。表示从该 Activity java 文件创建的 Fragment。

【讨论】:

【参考方案6】:
 <activity
        android:name="com.singtel.ricecooker.PresenceLogFragment"
        android:label="@string/app_name" >
    </activity>

如果 com.singtel.ricecooker.PresenceLogFragment 代表一个活动,并且如果它是一个片段,那么在你的清单文件中添加它,那么你做错了。在第二种情况下使用下面的代码,

getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new PresenceLogFragment())
.commit();

【讨论】:

【参考方案7】:

您正在尝试将片段用作活动。 您可以将 PresenceLogFragment 重命名为 PresenceLogActivity 并让它扩展 Activity 而不是 Fragment 或者您可以尝试将您的片段用作片段。

此外,您尝试在应用中使用的任何活动都需要在清单中声明 (link)

更多关于片段以及如何使用它们here

【讨论】:

【参考方案8】:
Navigation.findNavController(view).navigate(R.id.youAc)

【讨论】:

以上是关于Android中的“找不到活动”的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义类启动浏览器意图 - 找不到活动

php yii 在数据库中找不到活动记录类“”的表“”

尝试访问模拟器日志时“找不到活动的 iOS 设备”

Elasticsearch PHP客户端抛出异常“在您的集群中找不到活动节点”

android 6.0 中的活动识别运行权限

如何在Android Studio中选择某些Build Variant?