0

Я успешно реализовал cardview and recycleview в своем навигационном ящике. Теперь проблема в том, что когда-либо я щелкнул в своем первом карточном представлении, который приведет меня к моему первому фрагменту, а затем нажмите назад, мои карты не находятся в моей вкладке списка (1-й фрагмент). Единственный вариант просмотра списка карт - снова пронести в свой навигационный ящик и щелкнуть по первому фрагменту, чтобы просмотреть карты.Карточки, которые не отображаются после нажатия назад

вот мой код RecyclerViewAdapter.class

package com.example.guitarista.citem.Exhibitor; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.CardView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.example.guitarista.citem.Gallery_SpringForward.GalleryFragment; 
import com.example.guitarista.citem.Gallery_activity.GalleryActivity; 
import com.example.guitarista.citem.R; 
import java.util.List; 



/** 
* Created by smdojt on 1/24/2017. 
*/ 

public class TabInt_RV_Adapter extends RecyclerView.Adapter<TabInt_RV_Adapter.ItemViewHolder> { 

    public static class ItemViewHolder extends RecyclerView.ViewHolder { 
     static CardView cv; 
     TextView itemName; 
     TextView itemCathegory; 
     ImageView itemPhoto; 

     ItemViewHolder(View itemView) { 
      super(itemView); 
      cv = (CardView)itemView.findViewById(R.id.cv); 
      itemName = (TextView) itemView.findViewById(R.id.item_name); 
      itemCathegory = (TextView) itemView.findViewById(R.id.item_cathegory); 
      itemPhoto = (ImageView) itemView.findViewById(R.id.item_photo); 
     } 
    } 

    List<Exhibitors_Int> items; 
    Context context; 
    TabInt_RV_Adapter(List<Exhibitors_Int> items, Context context) { 
     this.context = context; 
     this.items = items; 
    } 


    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    @Override 
    public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment_exhibitor_tabint_item, viewGroup, false); 
     ItemViewHolder ivh = new ItemViewHolder(v); 
     return ivh; 
    } 

    @Override 
    public void onBindViewHolder(ItemViewHolder itemViewHolder, final int i) { 
     itemViewHolder.cv.setOnClickListener(null); 
     itemViewHolder.itemName.setText(items.get(i).name); 
     itemViewHolder.itemCathegory.setText(items.get(i).cathegory); 
     itemViewHolder.itemPhoto.setImageResource(items.get(i).photoId); 

     ItemViewHolder.cv.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (i == 1) { 
        //Toast.makeText(context, "Index position is 1", Toast.LENGTH_SHORT).show(); 
        Intent intent = new Intent (context, GalleryActivity.class); 
        context.startActivity(intent); 
       } 
       else if (i == 2) { 
        //Toast.makeText(context, "Index position is 2 ", Toast.LENGTH_SHORT).show(); 
        AppCompatActivity activity = (AppCompatActivity) v.getContext(); 
        GalleryFragment gf = new GalleryFragment(); 
        activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, gf).addToBackStack(null).commit(); 
       } 

      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return items.size(); 
    } 


} 

обратите внимание, что на моем OnClick, есть две версии галереи. Первый - это первоначальное действие, а второе - для фрагмента.

Итак, когда я щелкнул по первому, а затем снова нажал, отобразятся карты. Теперь в чем проблема? Я не могу прокрутить навигационный ящик, когда я нажимаю на версию активности галереи.

Где, когда я щелкнул по второму экрану карты, который был реализован фрагментом, салфетка навигационного ящика работает внутри галереи, но когда я нажимаю назад, списки карт не будут отображаться.

даже когда я ставлю эти строки кода для фрагмента:

GalleryFragment fr = new GalleryFragment(); 
        Bundle args = new Bundle(); 
        fr.setArguments(args); 
        FragmentManager fm = getFragmentManager(); 
        FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
        fragmentTransaction.replace(R.id.fragment_container, fr); 
        fragmentTransaction.addToBackStack(null); 
        fragmentTransaction.commit(); 

Я просто даже получить ошибку getFragmentManager();

Есть ли другой способ решить эту проблему?

КОД ДЛЯ CARDVIEWS

package com.example.guitarista.citem.Exhibitor; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.example.guitarista.citem.R; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class TabInternationalFragment extends Fragment { 

    private List<Exhibitors_Int> items; 
    private RecyclerView rv; 

    public TabInternationalFragment() { 
     // Required empty public constructor 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_exhibitor_tab_international, container, false); 

     rv=(RecyclerView)v.findViewById(R.id.rv); 
     LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
     rv.setLayoutManager(llm); 
     //GridLayoutManager glm = new GridLayoutManager(getActivity(), 4); 
     //rv.setLayoutManager(glm); 
     rv.setHasFixedSize(true); 

     initializeData(); 
     initializeAdapter(); 
     return v; 
    } 

    private void initializeData() { 
     items = new ArrayList<>(); 
     items.add(new Exhibitors_Int("A. GARCIA CRAFTS", "FURNITURE", R.drawable.image1)); 
     items.add(new Exhibitors_Int("BALEX BOXES", "HOLIDAY DECORATION", R.drawable.image2)); 
     items.add(new Exhibitors_Int("CAGAYAN DE ORO HANDMADE PAPER", "HOME DECOR/HOUSEWARE", R.drawable.image3)); 
    } 

    private void initializeAdapter(){ 
     TabInt_RV_Adapter adapter = new TabInt_RV_Adapter(items, getContext()); 
     rv.setAdapter(adapter); 

    } 

} 
+0

Оставьте здесь фрагментный код – Pehlaj

+0

Фрагмент галереи или основной фрагмент, используемый при их создании. – SovietSenpai

+0

Да, фрагмент, в котором вы показываете вид карты – Pehlaj

ответ

0

Если вы хотите сохранить свою первую деятельность, как это было после того, как вы нажали кнопку назад, вы должны определить режим запуска вашей первой активности в AndroidManifest. XML. Также определите родительскую активность для вашего второго действия, так что Android знает, к какой активности он должен вернуться, когда вы нажмете кнопку «Назад».

<activity 
     android:name=".activity.HomeActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" /> 
    <activity 
     android:name=".activity.GalleryActivity" 
     android:label="@string/app_name" 
     android:parentActivityName=".activity.HomeActivity" 
     tools:ignore="UnusedAttribute"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activity.HomeActivity" /> 
    </activity> 

Режим запуска SingleTop будет убедиться, что ни один новый экземпляр этого вида деятельности будет создан, если уже есть экземпляр в стеке деятельности. Таким образом, ваши карты по-прежнему будут видны в вашем первом действии после нажатия кнопки «Назад».

+0

Я обновляю вас позже, как только это реализовано – SovietSenpai

Смежные вопросы