如何在两个片段之间传递参数?

时间:2016-05-04 09:42:44

标签: android listview android-fragments android-studio

我必须将两个参数从片段传递到另一个片段。第一个参数是String类型,第二个参数是int类型。我想要使​​用bundle传递参数但不起作用。

第一片

Fragment fragment = new Fragment();
                Bundle bundle = new Bundle();
                bundle.putInt("totale", totalAmount);
                fragment.setArguments(bundle);

第二部分

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        TextView titolo2 = (TextView) getView().findViewById(R.id.quantità2);
        Bundle bundle=this.getArguments();
        int myInt = bundle.getInt("totale", 0);
        titolo2.setText(myInt);

        return inflater.inflate(R.layout.fragment_two, container, false);




    }

5 个答案:

答案 0 :(得分:0)

在第一个片段中写下:

TwoFragment fragment = new TwoFragment ();
                    Bundle bundle = new Bundle();
                    bundle.putInt("totale", totalAmount);
                    fragment.setArguments(bundle);

第二个片段:

Bundle bundle=getArguments();
        int myInt = bundle.getInt("totale", 0);
        titolo2.setText(myInt);

答案 1 :(得分:0)

像这样改变第二片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_two, container, false);

    TextView titolo2 = rootView.findViewById(R.id.quantità2);
    Bundle bundle=this.getArguments();
    int myInt = bundle.getInt("totale", 0);
    titolo2.setText(myInt + "");

    return rootView;
}

答案 2 :(得分:0)

您应该将第二个片段的工作作为:

$('#HideRecord').click(function() {
    if(document.getElementById('HideRecord').checked) {
        $( "ul li:nth-child(1)" ).hide();
        $( "ul li:nth-child(2)" ).hide();   
    } else {
        $( "ul li:nth-child(1)" ).show();
        $( "ul li:nth-child(2)" ).show();   
    }
});   

答案 3 :(得分:0)

创建一个包含两个静态成员的公共类:

lssvm

然后从你的第一个片段中设置如下值:

public class SomeClass {
    public static String stringValue="";
    public static int integerValue=0;
}

您可以根据需要在第二个片段中使用这些变量:

SomeClass.stringValue="yourValue";
SomeClass.integerValue=yourIntegerValue;

答案 4 :(得分:0)

如果两个片段属于同一个活动,最好使用这种方法:

在活动中你应该保存对片段的引用,这些片段之间的所有通信都应该通过活动,我们将它命名为BaseActivity。例如,添加到activity方法,它将params传递给第二个片段:

void updateSecondFragment(int param1, String param2){
    mFragment2.updateTitle(param2);
}

在第二个片段中:

void updateTitle(String title){
    mTextView.setText(title);
}

在第一个片段中:

BaseActivity mActivity;

@Override
void onAttach(Activity activity) {
    if (activity instanceOf BaseActivity){
        mActivity = (BaseActivity) activity;
    }
}

private void updateSecondFragment(){
    if (mActivity != null){
        mActivity.updateSecondFragment(int param1, String param2);
    }
}