我需要使用ViewPager
将Fragment
添加到我的主要活动的一部分TabActivity
。
为此,我创建了一个扩展ViewPagerActivity
的{{1}}类,从这里添加调用FragmentActivity
,调用FragmentAdapter
创建包含我想要创建的视图的Fragment
。
但是我遇到的问题是我无法让我的主类在我的主要活动上创建viewpager。
我认为问题是当我在主要课程上调用课程ViewPagerActivity
时,无法创建fragment
来创建viewpager
。
请帮助我已经坚持了近一个月了,我尝试的每个解决方案都失败了。 这些代码在单独的项目中单独实现时运行完美,但在我的项目中实现时似乎不会执行。
ViewPagerActivity类
class ViewPagerClass extends FragmentActivity implements OnClickListener
{
TestFragmentAdapter mAdapter;
ViewPager mviewpager;
CirclePageIndicator mIndicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mviewpager = new ViewPager(getApplicationContext());
mviewpager.setId(R.id.viewPager);
mviewpager.setAdapter(mAdapter);
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mviewpager);
}
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
}
}
TestFragmentAdapter.java
class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test"};
protected static final int[] ICONS = new int[] {};
private int mCount = CONTENT.length;
public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return TestFragmentAdapter.CONTENT[position % CONTENT.length];
}
@Override
public int getIconResId(int index) {
return ICONS[index % ICONS.length];
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
TestFragment.java
public final class TestFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";
static TestFragment fragment = new TestFragment();
public static TestFragment newInstance(String content) {
StringBuilder builder = new StringBuilder();
builder.append(content).append("\n");
fragment.mContent = builder.toString();
return fragment;
}
private String mContent = "???";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getString(KEY_CONTENT);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.pagerframe, container);
LayoutParams textparam = new LayoutParams(130,40);
TestView text = new TextView(getActivity());
text.setText(mContent);
text.setTextColor(Color.WHITE);
LinearLayout layout = (LinearLayout) view.findViewById(R.id.pager_ll);
layout.setBackgroundColor(Color.BLUE);
layout.setVisibility(View.VISIBLE);
layout.setGravity(Gravity.CENTER);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(text,textparam);
return layout;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_CONTENT, mContent);
}
}
答案 0 :(得分:1)
您忘记设置内容视图,因此请在初始化ViewPager后设置,因为View寻呼机是您的内容视图
setContentView(mviewpager);
答案 1 :(得分:0)
代码终于在这里和那里进行了一些改动。我想在这里添加它们以帮助其他开发人员遇到与我相同的问题。
我需要使用Fragment将ViewPager添加到我的主要活动的一部分,该活动扩展了TabActivity。为此,我创建了一个ViewPagerActivity类,它扩展了FragmentActivity,从这里它添加了FragmentAdapter调用,它创建了包含我想要创建的视图的Fragment。但是我面临的问题是我不能让我的主要课程在我的主要活动上创建viewpager。
Fragment
和TabActivity
我发现某个地方我们可以将Tab
的功能扩展为Listener。我是这样做的:
public class Main extends FragmentActivity implements OnClickListener,TabContentFactory{ }
然后我将我的课程ViewPagerActivity
中的代码写入Main
我想这是主要问题。无论如何,我更改了代码以在Bundle
类中创建TestFragment
,如此
public static TestFragment newInstance(String content) {
TestFragment fragment = new TestFragment();
Bundle args = new Bundle();
args.putString("content", content);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// the if clause wasnot working for me
mContent = getArguments().getString("content");
}
更改为onCreate
以返回视图而不是我之前缺少的布局
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.pagerframe, container,false);
LayoutParams textparam = new LayoutParams(LayoutParams.FILL_PARENT,30);
TestView text = new TextView(getActivity());
text.setText(mContent);
text.setTextColor(Color.WHITE);
LinearLayout layout = (LinearLayout) view.findViewById(R.id.pager_ll);
layout.setVisibility(View.VISIBLE);
layout.setGravity(Gravity.CENTER);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(edtext,textparam);
return view;
}
此后一切运作良好。