我有一个登录页面占据屏幕的前半部分,其中包含2 EditText
字段,用于电子邮件和密码以及Button
。下半部分包含一个ListFragment
公共项目。如果用户成功登录,则新的Activity应该开始包含与MainActivity相同但只有不同数据的Fragment
- 用户创建的项目。我已成功完成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);
}
}
我正在使用CustomAdapter和此列表。虽然现在我知道ProjectListFragment.java
不是一个活动,所以它不能从意图开始。那么我怎样才能实现我的目标呢?
答案 0 :(得分:2)
ProjectListFragment.java 是一个片段,因此您无法使用意图来启动片段事务。我能想到的唯一解决方案是创建一个新的Activity,其布局中的框架布局充当片段容器。
然后使用intent您可以启动该活动,并且在该活动的 onCreate 中,您可以使用片段事务显示片段(将片段附加到您的活动,因为片段是活动的一部分。不能是单独打开)。所以这样你就可以达到你想要的效果。
有关更清晰的提示,请参阅THIS EXAMPLE和THIS EXAMPLE