как открыть новое действие, щелкнув textView из пользовательского списка внутри фрагмента в Android - PullRequest
0 голосов
/ 16 мая 2019

Я использую макет с вкладками в упражнении, скажем 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.
...