我目前正在从事android项目,但我对android还是比较陌生,尤其是java。我有个错误 Expected a boolean but was BEGIN_ARRAY at line 1 column 114 path $[0].ItemDetails
. 这些错误将我重定向到这一行代码,特别是在第二行:
Type listType = new TypeToken<List<Receipt>>(){}.getType();
receipt = r.fromJson(receipt_data, listType);
我打赌这是新手犯的错误,但我不知道如何解决这个问题。我很感激你的回答。
这是完整的代码
package tech.agronum.kitchenwaremobile.fragments.products;
import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
import tech.agronum.kitchenwaremobile.R;
import tech.agronum.kitchenwaremobile.adapters.TabAdapter;
import tech.agronum.kitchenwaremobile.fragments.carts.DaftarCartFragment;
import tech.agronum.kitchenwaremobile.models.Login.Login;
import tech.agronum.kitchenwaremobile.models.Mobile.Product.Receipt;
public class DaftarProdukFragment extends Fragment implements View.OnClickListener {
public TabAdapter adapter;
private TabLayout tabLayout;
private ViewPager viewPager;
private FloatingActionButton cart;
Fragment cart_page;
FragmentManager fragmentManager;
Login login;
List<Receipt> receipt;
@SuppressLint("RestrictedApi")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_daftar_produk, container, false);
fragmentManager = getActivity().getSupportFragmentManager();
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
String receipt_data = preferences.getString("order_data", "");
Gson r = new Gson();
String test = preferences.getString("userData", "");
Gson g = new Gson();
login = g.fromJson(test, Login.class);
Type listType = new TypeToken<List<Receipt>>(){}.getType();
receipt = r.fromJson(receipt_data, listType);
tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
viewPager = (ViewPager) view.findViewById(R.id.viewPager);
cart = (FloatingActionButton) view.findViewById(R.id.cart);
configureTabLayout();
if(receipt == null) {
cart.setBackgroundColor(Color.RED);
cart.setBackgroundTintList(ColorStateList.valueOf(Color.RED));
cart.setEnabled(false);
} else {
cart.setBackgroundColor(Color.GREEN);
cart.setBackgroundTintList(ColorStateList.valueOf(Color.GREEN));
cart.setEnabled(true);
cart.setOnClickListener(this);
}
if(login.getRoleDetails().getIsReadShoppingCartMobile() == null || login.getRoleDetails().getIsReadShoppingCartMobile() == 0) {
cart.setVisibility(View.GONE);
} else {
cart.setVisibility(View.VISIBLE);
}
return view;
}
private void configureTabLayout() {
tabLayout.addTab(tabLayout.newTab().setText("Reguler"));
tabLayout.addTab(tabLayout.newTab().setText("Bundle/Paket"));
adapter = new TabAdapter(getChildFragmentManager());
adapter.addFragment(new DaftarProdukBundleFragment(), "Bundle/Paket");
adapter.addFragment(new DaftarProdukRegulerFragment(), "Reguler");
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cart:
cart_page = new DaftarCartFragment();
fragmentManager.beginTransaction().replace(R.id.mainMenu_container, cart_page).addToBackStack("fragment").commit();
break;
default:
break;
}
}
}
1条答案
按热度按时间pexxcrt21#
检查收据类。这里面肯定有不匹配的地方。使用此命令再次生成receipt类-http://www.jsonschema2pojo.org/
请遵循此说明了解更多信息。https://github.com/google/gson/blob/master/userguide.md