我正在尝试创建一个类似于此github页面https://github.com/commonsguy/cwac-pager的自述文件中显示的示例的ArrayAdapter。我有各种各样的片段,我想传递给ArrayPagerAdapter,而不是像示例中那样。我对如何将desc.getTitle传递到示例中新创建的Fragment实例感到困惑。另外我怎么能用android.app.Fragment来创建片段的新实例呢?我在下面发布了我的代码我在newInstance();
上有错误static class SimplePagerAdapter extends ArrayPagerAdapter<android.app.Fragment>{
public SimplePagerAdapter(FragmentManager fragmentManager,
ArrayList<PageDescriptor> descriptors) {
super(fragmentManager, descriptors);
}
@Override
protected android.app.Fragment createFragment(PageDescriptor desc) {
Fragment newFragment = new JudgeMainFragment();
return(android.app.Fragment.newInstance(desc.getTitle()));
}
}
答案 0 :(得分:0)
我对如何将desc.getTitle传递到示例中新创建的Fragment实例感到困惑
您的代码与我在项目README
中的代码不同,因为Fragment
没有newInstance()
方法,因此无法使用。 README
正在显示EditorFragment
,具体为the EditorFragment
from the sample app。 EditorFragment
实现newInstance()
方法,使用参数Bundle
将标题添加到片段中:
package com.commonsware.cwac.pager.demo;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
public class EditorFragment extends Fragment {
private static final String KEY_TITLE="title";
static EditorFragment newInstance(String title) {
EditorFragment frag=new EditorFragment();
Bundle args=new Bundle();
args.putString(KEY_TITLE, title);
frag.setArguments(args);
return(frag);
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View result=inflater.inflate(R.layout.editor, container, false);
EditText editor=(EditText)result.findViewById(R.id.editor);
editor.setHint(getTitle());
return(result);
}
public String getTitle() {
return(getArguments().getString(KEY_TITLE));
}
}
请注意,片段不需要知道其标题,但如果您希望片段知道其标题,请使用参数Bundle
,例如通过{{ 1}} - 样式工厂方法。
另外,我怎样才能使用android.app.Fragment创建碎片的新实例呢?
你不会,因为newInstance()
本身相当无用。您可以创建Fragment
的子类来实现您的页面,就像在Android中执行任何片段一样。
我想要传递给ArrayPagerAdapter的各种片段而不是像示例中那样的片段
您需要根据Fragment
了解如何创建正确的片段实例。这可能是通过自定义PageDescriptor
实施中的int
或其他内容实现的,然后您可以使用PageDescriptor
中的switch
。