Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有目的地开始一个片段_Android_Android Fragments - Fatal编程技术网

Android 有目的地开始一个片段

Android 有目的地开始一个片段,android,android-fragments,Android,Android Fragments,我有一个占据屏幕前半部分的登录页面,其中包含电子邮件和密码的2EditText和按钮等字段。第二部分包含一个带有公共项目的ListFragment。如果用户成功登录,则新活动应开始包含与主活动相同的片段,但数据不同-用户创建的项目。我已成功执行MainActivity,但用户登录后的下一个活动无法启动。例外情况: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.examp

我有一个占据屏幕前半部分的登录页面,其中包含电子邮件和密码的2
EditText
按钮等字段。第二部分包含一个带有公共项目的
ListFragment
。如果用户成功登录,则新活动应开始包含与主活动相同的
片段
,但数据不同-用户创建的项目。我已成功执行MainActivity,但用户登录后的下一个活动无法启动。例外情况:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.amangrover.finalapp1/com.example.amangrover.finalapp1.ProjectListFragment}; have you declared this activity in your AndroidManifest.xml?
private_projects_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

<fragment
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    class="com.example.amangrover.finalapp1.ProjectListFragment"
    android:id="@+id/privateProjectFragment"/>

</LinearLayout>

ProjectListFragment.java:

public class ProjectListFragment extends ListFragment{
String[] projectTitle;
String[] projectImage;

CustomAdapter adapter;

private List<RowItem> rowItems;

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

    return inflater.inflate(R.layout.list_fragment, null, false);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle args = getActivity().getIntent().getExtras();
    projectTitle = args.getStringArray("projectTitle");
    projectImage = args.getStringArray("imageId");

    rowItems = new ArrayList<RowItem>();

    for(int i=0; i<projectTitle.length; i++) {
        RowItem item = new RowItem(projectTitle[i], 0);
        rowItems.add(item);
    }
    adapter = new CustomAdapter(getActivity(), rowItems);
    setListAdapter(adapter);
  }
}
公共类ProjectListFragment扩展了ListFragment{
字符串[]项目标题;
字符串[]投影图像;
自定义适配器;
私人物品清单;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(R.layout.list_片段,空,假);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Bundle args=getActivity().getIntent().getExtras();
projectTitle=args.getStringArray(“projectTitle”);
projectImage=args.getStringArray(“imageId”);
rowItems=新的ArrayList();

对于(int i=0;iProjectListFragment.java是一个片段,因此您不能使用意图来启动片段事务。我能想到的唯一解决方案是创建一个新的活动,该活动的布局中有一个框架布局,充当片段容器

然后使用intent,您可以启动该活动,在该活动的onCreate中,您可以使用片段事务显示您的片段(将该片段附加到您的活动中,因为片段是活动的一部分。不能单独打开)。这样您就可以实现您想要的


要想了解更清楚的想法,请参见和

只将
附加
删除
片段
到您的
活动
。看看这个例子,我必须创建一个新的
活动
,并将
项目列表片段
附加到该活动?是的。这是正确的方法。因此,我应该创建一个新的
活动
ProjectListFragment
附加到该活动中?我尝试了它,但它给了我一个错误,没有找到ProjectListFragment.java的视图。它真的开始让我困惑了。你能更详细地描述一下解决方案吗?你能描述一下你遵循的步骤吗?我已经为你添加了描述链接抱歉,这是我的错误。我没有在我创建的新活动中设置内容视图来调用片段。现在它工作正常。谢谢。只想再问1个问题-我如何传递一些数据,比如说从活动到片段的字符串数组?你可以使用bundle。在参数中设置bundle。请参阅