如何在Activity中接收Intent

时间:2016-01-15 18:54:20

标签: android android-intent parcelable android-bundle

老实说,我在问之前做了一些关于此的研究。如何从活动接收意图到fragmentactivity我正在尝试使用viewpager。我在获取参数Bundle extras = getArguments();

时遇到错误
public class SingleViewActivity extends FragmentActivity {
    ImageView   imageView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_page_view);

   ArrayList<Listitem> personArrayList = new ArrayList<Listitem>();
       // Listitem item = new Listitem("1", "http://developer.android.com/assets/images/android_logo.png");//I used to add it staticly

        Bundle extras = getArguments();
        if (extras != null) {
            extras = extras.getParcelableArrayList(ARG_PERSON_LIST);
            personArrayList.add(item);        }
    //    DemoObjectFragment f = DemoObjectFragment.newInstance(personArrayList);

        ViewPager    mViewPager = (ViewPager) findViewById(R.id.pager);
        Log.d("s", "singleview");


        DemoCollectionPagerAdapter mDemoCollectionPagerAdapter =      new DemoCollectionPagerAdapter( getSupportFragmentManager(),personArrayList);
        mViewPager.setAdapter(mDemoCollectionPagerAdapter);

3 个答案:

答案 0 :(得分:1)

您将需要两项活动。由于您没有发布启动发布的Activity的{​​{1}},因此我创建了一个仅包含启动显示的Activity的{​​{1}}的简单版本。

记下评论的步骤。共有六个步骤。

第一个Button获取Activity数据,将其传递给第二个Activity,后者又传入ArrayList

Activity
DemoCollectionAdapter

答案 1 :(得分:0)

您正在将ParcelableList对象分配给Bundle变量。

extras = extras.getParcelableArrayList(ARG_PERSON_LIST); //change it

将其分配给ParcelableList而不是extras

编辑:

试试这个,

ArrayList<Listitem> personArrayList;
// Listitem item = new Listitem("1", "http://developer.android.com/assets/images/android_logo.png");//I used to add it staticly

Bundle extras = getArguments();
if (extras != null) {
    personArrayList = (ArrayList<Listitem>) extras.getParcelableArrayList("jh");
    personArrayList.add(item); 
    ....       
}

答案 2 :(得分:0)

创建片段对象时,还要在创建的片段对象中设置参数。

像这样......

Fragment f = new Fragment();
Bundle args = new Bundle();
args.putInt("someNum", 0);
f.setArguments(args);

然后在onCreate()或onCreateView方法的片段中,获取参数。

getArguments().getInt("someNum");

在您的情况下,它将是可分类或可序列化的对象。