【问题标题】:Passing Data From Activity to another and then passing to fragment in ViewPager将数据从 Activity 传递到另一个,然后传递到 ViewPager 中的片段
【发布时间】:2016-09-28 05:52:52
【问题描述】:

我正在尝试使用ViewPager 将数据从我的MainActivty 传递到另一个ViewPager,并在Fragment 中获取该数据。

我尝试了很多方法,但应用程序每次都崩溃。

这是我的课程:

我的持有人:

@Override
public void onBindViewHolder(main_rv_holder holder, int position) {
  holder.name.setText(mains.get(position).getName());
  holder.image_main.setImageResource(mains.get(position).getImg());

  //Clicked
  holder.setItemClickListener(new ItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {
      Intent intent = new Intent(context,ViewerActivity.class);
      intent.putExtra("title",mains.get(position).getName());
      intent.putExtra("pos",position);
      context.startActivity(intent);
    }
  });
}

我的寻呼机活动:

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_viewer);
  //Toolbar Initialization
  InitializeToolbar();
  //ViewPAGER Initialization
  InitializePager();
  //Floating Action Button
  Fabinitialize();

  //pass data
  Bundle data = new Bundle();
  //Use bundle to pass data
  Form1 fragmentobj = new Form1();

  data.putString("tag","Hello");
  fragmentobj.setArguments(data);
}

ViewPager 中的片段:

public class Form1 extends Fragment {
  String TAG;

  public Form1() {
    TAG = getArguments().getString("tag");
    // Required empty public constructor
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment, container, false);
    TextView textView = (TextView) view.findViewById(R.id.text_VIew);
    textView.setText(TAG);

    return view;
  }
}

谢谢。

【问题讨论】:

  • 你为什么要传递数据这么多次?只需将该数据保存在共享首选项或数据库中,然后直接在视图寻呼机中访问它
  • 我希望片段在您单击位置并选择类别时加载不同的数据,因此我希望片段知道单击了什么以加载适当的数据@VivekMishra
  • 你可以像 getActivity().getIntent().getStringExtra("key"); 一样直接访问 Fragment 中的 Intent;
  • 你能告诉我怎么做,因为我也试过了,它没有用@SuryaPrakashKushawah

标签: android android-fragments android-viewpager fragment android-bundle


【解决方案1】:

见下面代码

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment, container, false);
        TextView textView = (TextView) view.findViewById(R.id.text_VIew);
    String title= getActivity().getIntent().getStringExtra("title");
        textView.setText(title);

            return view;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多