нулевой пакет во фрагменте, как правильно получить пакет во фрагменте? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть действие с несколькими кнопками, при нажатии кнопки открывается новое действие с двумя фрагментами.

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

пакет не равен нулю в onAttach, но имеет значение пусто в settextview метод

фрагмент

publi c class MyFragment extends Fragment {

private OnFragmentInteractionListener mListener;
private static TextView input ;
private static RecyclerView rv ;
private Handler mhandler = new Handler();
public  Bundle bundle;
public String data;

public MyFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

     View view =inflater.inflate(R.layout.fragment_my, container, false);
      input  =view.findViewById(R.id.input);
       rv =view.findViewById(R.id.rv);

    return view;
}
public void setTextView(String text){

    input.setText(text);

    String[] numberList = input.getText().toString();
    final Integer[] numbers = new Integer[numberList.length];

    ArrayList<String> List ;
    LinearLayoutManager llm = new LinearLayoutManager(getActivity());
    rv.setLayoutManager(llm);
    ListAdapter adapter = new ListAdapter() ;
    rv.setAdapter(adapter);

    System.out.println("setextview "+bundle);

    if(bundle != null){
        if (sort1.equals("se")) {
            ClassA m1 = new ClassA();
            List = m1.etap(numbers);
            adapter.setList(mystepsList);

        }else if (sort1.equals("in")) {
            ClassB = new ClassB();
            List = m1.etap(numbers);
            adapter.setList(mystepsList);
        } }
@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if (context instanceof OnFragmentInteractionListener) {

    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnFragmentInteractionListener");
    }
    bundle = getActivity().getIntent().getExtras();
    sort1 =b.getString("value");
    System.out.println("onAttach "+bundle);
}
public interface OnFragmentInteractionListener {

    void onFragmentInteraction(Uri uri);
}}

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Попробуйте этот код для передачи данных из действия во фрагмент

В действии

Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

Во фрагменте

Bundle bundle = getArguments ();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
     Bundle bundle= getArguments();
      if(bundle!=null){
         String strtext = bundle.getString("edttext"); 
       }

    return inflater.inflate(R.layout.fragment, container, false);
}
0 голосов
/ 15 апреля 2020

Вы можете сделать это, если get extra имеет значение null или null, если не null снова, вы можете перепроверить с ключом, который вы хотите получить, с помощью containsKey (), чтобы проверить, есть ли в комплекте данные, относящиеся к этому ключу, или нет.

Bundle bundle = getIntent.getExtras();
    if (bundle!=null && bundle.containsKey("value") {
            boolean value = bundle.getStringExtra("value");
    } else {
        Log.i("MainActivity", "Bundle is Null or don't have key");

    }
...