片段活动

时间:2014-01-22 13:44:01

标签: android text view fragment adapter

我是Android界的新手,至少可以说它很复杂。我正在制作一个小应用程序,以便更好地理解活动和片段的操作。我的目标是拥有10个屏幕。这些屏幕还必须包含与其他图像不同的图像上的字符串。这是关于第一个片段的类的代码,它将具有蓝色背景。

package pl.looksok.viewpagerdemo;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.Fragment;

public class FragmentBlue extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_blue, container, false);
        return view;
    }
}

这将是包含不同名称的页面。这里的问题是我不能放任何文本视图,因为我扩展了类片段而不是Activity.In这个文件而是做一个循环,我在页面生成之前死了11次

package pl.looksok.viewpagerdemo;

import java.util.ArrayList;
import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.widget.Button;

public class MyPagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
        this.fragments = new ArrayList<Fragment>();

        for(int i = 0; i<=10; i++){
            fragments.add(new FragmentBlue());
        }
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }
}

最后,这是主要活动

    package pl.looksok.viewpagerdemo;

    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyPagerAdapter pageAdapter = new MyPagerAdapter(getSupportFragmentManager());
        ViewPager pager = (ViewPager)findViewById(R.id.myViewPager);
        pager.setAdapter(pageAdapter);
    }
}

我希望每个活动都有一个文本视图,可以为每个页面创建不同的结果。谁知道如何帮助我?感谢

2 个答案:

答案 0 :(得分:0)

试试这个

List<Fragment> fragments ;
fragments = new Vector<Fragment>();
for(int i = 0; i<=10; i++){
            fragments.add(Fragment.instantiate(this, FragmentBlue.class.getName()));
        }

答案 1 :(得分:0)

在你的fragment类中创建一个静态方法来获取一个包含所需颜色,图像和文本的片段......

public static Fragment getFragmentWithColorImageAndText(int color, int imageRes, String text) {
    Bundle bundle = new Bundle();
    bundle.putInt("color",color);
    bundle.putInt("image",image);
    bundle.putString("text",text);
    YourFragment fragment = new YourFragment();
    fragment.setArguments(bundle);
    return fragment;
}

然后在你的片段onCreate或onCreateView上做

Bundle bundle = getArguments();
String text = bundle.getString("text");
YOUR_TEXTVIEW.setText(text);

...与color(setBackground ...)和图像相同...(YOUR_IMAGEVIEW.setImage ...)

现在,当你想创建一个片段时,你只需要做...

YourFragment.getFragmentWithColorImageAndText(Color.BLUE, R.drawable.imageRes, "Hello World");