【问题标题】:Pass ArrayList<String> between two activities that extends Fragment in Android在 Android 中扩展 Fragment 的两个活动之间传递 ArrayList<String>
【发布时间】:2016-04-05 01:03:29
【问题描述】:

我有扩展片段的活动1。这里有一个 ArrayList (FinalListToSend) 我想传递给另一个 activity2

 //ACTIVITY1
    public class Page1Activity extends Fragment {
    ArrayList<String> FinalListToSend;

public ArrayList<String> getList() {
    return FinalListToSend;
}

public void setList(ArrayList<String> FinalListToSend) {
    this.FinalListToSend = FinalListToSend;
}
    public static Page1Activity newInstance() {
    Page1Activity fragment = new Page1Activity();
    return fragment;
    }
public Page1Activity() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_page1, container, false);       
   return rootView;
   }
  }

我想在第二个活动中获取 ArrayList

      //ACTIVITY2
     public static Page2Activity newInstance() {
    Page2Activity fragment = new Page2Activity();
    return fragment;
}
public Page2Activity() {    }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.activity_page2, container, false);
     Page1Activity page1= new Page1Activity();
            ArrayList<String> ListToSave = new ArrayList<String>();
            ListToSave=new ArrayList<String>(page1.FinalListToSend);
      return rootView;
     }}

我在这两个活动中使用查看寻呼机。 我使用此代码,当我在 Page1Activity 中调试时,FinalListToSend 正确获取项目,但是当我按下 PageActivity 上的按钮时,FinalListToSend 变为空。有任何想法从第二个活动中获取数组吗?

【问题讨论】:

标签: android android-fragments android-activity parameter-passing


【解决方案1】:

你试过Bundle

Page2Activity tf = new Page2Activity ();
                 Bundle bundle = new Bundle();
                 bundle.putString("user_id", usersid);
                 tf.setArguments(bundle);
                 FragmentManager fm = getFragmentManager();
                 FragmentTransaction ft = fm.beginTransaction();
                 ft.replace(R.id.frame_container, tf);
                 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                 ft.addToBackStack(null);
                 ft.commit();

获取捆绑数据

usersid = getArguments().getString("user_id");

对于 Arraylist,您可以使用

bundle.putStringArrayList("alist", yourarraylist);

【讨论】:

  • 并从其他活动中获取此数据?
  • 不起作用。第一个代码必须在 Page1Activity 中?
  • 也许我做的东西是错的。我不知道。它不工作
  • 尝试登录,看看你能不能进入第二个片段??
【解决方案2】:

终于搞定了,需要把main Activity中的arraylist设置为Final static

      public class MainActivity extends AppCompatActivity {

private static ArrayList<String> FinalListToSend=new ArrayList<>();

public ArrayList<String> getList() {
    return FinalListToSend;
}

public void setList(ArrayList<String> FinalListToSend) {
    this.FinalListToSend = FinalListToSend;
}

然后从第一个片段开始设置

        public class Page1Activity extends Fragment {
        addBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        ArrayList<String> listErgasies = new ArrayList<String>();
        listErgasies.add("DATA");
        MainActivity MA= new MainActivity();
            MA.setList(listErgasies);});
          }

从第二个片段中获取

      public class Page2Activity extends Fragment {
      saveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
       ArrayList<String> ListToSave = new ArrayList<String>();
       MainActivity MA= new MainActivity();
            ListToSave=new ArrayList<String>(MA.getList());}
         //  Toast.makeText(getActivity(),ListToSave.toString(),Toast.LENGTH_SHORT).show();
    });}

【讨论】:

    【解决方案3】:

    1) 传递arraylist listErgasies 从活动 1 到活动 2 How to pass ArrayList<CustomeObject> from one activity to another?

    2) 再次显示为 listView

    【讨论】:

    • 你是对的,但我有片段活动。我编辑问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多