Я использую макет с вкладками в упражнении, скажем event.class
.Внутри событий у меня есть две вкладки, скажем, предстоящая и предыдущая (это две фрагменты).Здесь я заполняю пользовательский список.В этом шаблоне списка у меня есть интерактивное текстовое представление, и, нажав на это текстовое представление, я хочу открыть новое действие.Проблема в том, что когда я нажимаю в этом TextView
новом действии, которое открывается на мгновение, а затем приложение вылетает.
main.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.events);
owner = (User) getIntent().getSerializableExtra("USER");
profileMail = owner.getUemail();
b = new Bundle();
b.putSerializable("USER_B", owner);
tabLayout = findViewById(R.id.tablayout);
comingEvent = findViewById(R.id.upcoming);
previousEvent = findViewById(R.id.previous);
viewPager = findViewById(R.id.viewPager);
pageAdapter = new TabPageAdapter(getSupportFragmentManager(), tabLayout.getTabCount(),b);
viewPager.setAdapter(pageAdapter);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
}
PagerAdapter
public class TabPageAdapter extends FragmentPagerAdapter {
private int numTabs;
private Bundle bund;
//String profileMail;
public TabPageAdapter(FragmentManager fm, int numTabs, Bundle bundle) {
super(fm);
this.numTabs = numTabs;
this.bund = bundle;
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new UpcomingEvents();
fragment.setArguments(bund);
break;
case 1:
fragment = new PreviousEvents();
fragment.setArguments(bund);
break;
default:
fragment = null;
break;
}
return fragment;
}
}
Фрагмент первой вкладки выглядит следующим образом.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_upcoming_events, container, false);
eventlist = (ListView) v.findViewById(R.id.eventCardList);
cardList = new ArrayList<>();
owner_Up = (User) getArguments().getSerializable("USER_B");
teamName = owner_Up.getUteam();
String events = owner_Up.getUevents();
cardList.add(new Events_Card(evtname,teamName,evtDesc,evtDate,evtContri,evtId,evtMems,contri,spent,rem,approx,CrMems));
adapter = new Event_List_Adapter(getActivity(), R.layout.event_list_template, cardList);
eventlist.setAdapter(adapter);
return v;
}
И адаптер списка.
public class Event_List_Adapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList<Events_Card> eventCard;
//constructor initializing the values
public Event_List_Adapter(Context context, int resource, ArrayList<Events_Card> eventCardDetail) {
this.context = context;
this.layout = resource;
this.eventCard = eventCardDetail;
}
@Override
public int getCount() {
return eventCard.size();
}
@Override
public Object getItem(int position) {
return eventCard.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class ViewHolder{
TextView eventName,teamName, eventMemList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Event_List_Adapter.ViewHolder holder = new Event_List_Adapter.ViewHolder();
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(layout, null, false);
holder.eventName = view.findViewById(R.id.eventTextView7);
holder.teamName = view.findViewById(R.id.eventCardTeam);
holder.eventMemList = view.findViewById(R.id.eventMemList);
Events_Card card = eventCard.get(position);
holder.eventName.setText(card.getEventName());
holder.teamName.setText(card.getTeamName());
holder.eventMemList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent memList = new Intent(context,EventMemberList.class);
context.startActivity(memList);
}
});
return view;
}
}
EventMemberList
активность
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
Вот logcat, найденный во время сбоя.
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ashish.myteam, PID: 12375
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 571288 bytes
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:160)
at android.os.Handler.handleCallback(Handler.java:891)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7470)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Caused by: android.os.TransactionTooLargeException: data parcel size 571288 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:1147)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4005)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144)
at android.os.Handler.handleCallback(Handler.java:891)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:7470)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
I/Process: Sending signal. PID: 12375 SIG: 9
Application terminated.