有 2 個片段:A 和 B。我想從片段 A 將 ArrayList(資料)發送到片段 B。
action() - 一種資料傳輸和轉換到片段 B 的方法(使用 navigate())。程式構建沒有錯誤,但是當你點擊附加了action方法的按鈕時,發生了crash,錯誤如下:
java.lang.IllegalArgumentException:引數包中“陣列”的引數型別錯誤。應為 java.util.ArrayList。
它說我在 Bundle 中插入了一個錯誤型別的引數,需要一個 ArrayList。但它是一個 ArrayList,不是嗎?
請幫忙,我已經為這個問題苦苦掙扎了 2 天了。我的代碼如下。
片段 A 代碼:
package com.github.dev.app.pack;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.navigation.fragment.NavHostFragment;
import com.github.vladosspasi.mes.databinding.FragmentABinding;
import java.util.ArrayList;
public class FragmentA extends Fragment {
private FragmentABinding binding;
private ArrayList<Integer> data; // ArrayList that i want to send
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState
) {
binding = FragmentAsBinding.inflate(inflater, container, false);
return binding.getRoot();
}
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
data = new ArrayList<>();
data.add(1);
binding.actionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
action(); //method with navigating to fragmentB and data transmitting
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
private void action() {
Bundle arg = new Bundle();
arg.putSerializable("array", data); //putIntegerArrayList doesn't work either
NavHostFragment.findNavController(FragmentA.this)
.navigate(R.id.action_FragmentA_to_FragmentB, arg); //exception ocuring here
}
}
nav_graph.xml 中的片段宣告:
<fragment
android:id="@ id/FragmentA"
android:name="com.github.dev.app.pack.FragmentA"
android:label="Fragment A">
<action
android:id="@ id/action_FragmentA_to_FragmentB"
app:destination="@id/FragmentB"/>
</fragment>
<fragment
android:id="@ id/FragmentB"
android:name="com.github.dev.app.pack.FragmentB"
android:label="Fragment B">
<argument android:name="array" app:argType="java.util.ArrayList"/>
</fragment>
int、String 和其他引數作業正常,但 ArrayList 不能。請幫忙!謝謝你。
uj5u.com熱心網友回復:
請使用以下代碼將資料從一個片段發送到另一個片段
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("array",data);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460280.html
