2017-01-03 46 views
1

我的問題是,我試圖通過 final List<PieEntry> entries = new ArrayList<>();到另一個fragment,這或多或少是空的,直到現在。將數組列表傳遞給fragment?

我完整的代碼是這樣的:

package com.example.nextpietwo; 

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.inputmethod.EditorInfo; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.github.mikephil.charting.animation.Easing; 
import com.github.mikephil.charting.charts.PieChart; 
import com.github.mikephil.charting.components.Description; 
import com.github.mikephil.charting.data.Entry; 
import com.github.mikephil.charting.data.PieData; 
import com.github.mikephil.charting.data.PieDataSet; 
import com.github.mikephil.charting.data.PieEntry; 
import com.github.mikephil.charting.highlight.Highlight; 
import com.github.mikephil.charting.listener.OnChartValueSelectedListener; 

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

    public class SecondFragment extends Fragment { 
    // Store instance variables 
    private String title; 
    private int page; 

// newInstance constructor for creating fragment with arguments 
public static SecondFragment newInstance(int page, String title) { 
    SecondFragment fragmentSecond = new SecondFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("someInt", page); 
    args.putString("someTitle", title); 
    fragmentSecond.setArguments(args); 
    return fragmentSecond; 
} 

// Store instance variables based on arguments passed 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    page = getArguments().getInt("someInt", 0); 
    title = getArguments().getString("someTitle"); 
} 

// Inflate the view for the fragment based on layout XML 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.fragment_second, container, false); 
    TextView tvLabel2 = (TextView) view.findViewById(R.id.textView2); 

    //Alle Objekte hier einfügen (wie textview tvavel2) 
    final List<PieEntry> entries = new ArrayList<>(); 
    final Button button = (Button) view.findViewById(R.id.button); 
    final TextView textView = (TextView) view.findViewById(R.id.textView); 
    final TextView textView2 = (TextView) view.findViewById(R.id.textView2); 
    final EditText editText = (EditText) view.findViewById(R.id.editText); 
    final EditText editText2 = (EditText) view.findViewById(R.id.editText2); 
    final EditText editText3 = (EditText) view.findViewById(R.id.editText3); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick (View view) { 

      if (editText3.getText().toString().matches("")) { 
       Toast.makeText(getActivity(), "You did not enter a Valid Item ID", Toast.LENGTH_LONG).show(); 
       return; 

      } else if (editText2.getText().toString().matches("")) { 
       Toast.makeText(getActivity(), "You did not enter a Valid Quantitiy", Toast.LENGTH_LONG).show(); 
       return; 

      } else { 
       String nomen = (editText3.getText().toString()); 
       float number = Float.parseFloat(editText2.getText().toString()); 

       entries.add(new PieEntry(number, nomen)); 

       Bundle args = new Bundle(); 
       args.putStringArrayList("array", ArrayList); 
       FirstFragment.setArguments(args); 

       editText3.setText(""); 
       editText2.setText(""); 

       editText3.requestFocus(); 

      } 

     } 
    }); 

    return view; 
    } 
} 

簡單的解釋是讚賞(這引發ArrayList中fragment的)! 在此先感謝。

回答

1

首先讓能讓你PieEntry Parcelable通過實現界面Parcelable

守則first Fragemnt

SecondFragment secondfragment //where data needs to be pass 
Bundle bundle = new Bundle(); 
bundle.putParcelableArrayList("data", data); 
secondfragment.setArguments(bundle); 

數據writeen是寫在second Fragemnt

PieEntry

代碼列表

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      data =getArguments().getParcelableArrayList("data"); 
     } 
    } 
+0

如何實現接口Parcelable? –