0

I've a ListView from Json API. But, when I want to click or choose one of them, my App crash a.ka force closed. Can someone please help me with this? I've spent much time in trying to fix this. Even I read some discussions here for several days which is can relate or similar with this issue, it doesn't help. Thank you! :)

This is the source code:

public class KategoriFragment extends Fragment {

@BindView(R.id.kategori_lv)
ListView kategoriLv;
Unbinder unbinder;

public KategoriFragment() {
    // 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_kategori, container, false);
    unbinder = ButterKnife.bind(this, v);

    getData();

    //String value = getArguments().getString("title");

    return v;
}

private void getData() {

    RetrofitRequest.UserAPIService apiService = RetrofitRequest.getRetrofit().create(RetrofitRequest.UserAPIService.class);

    final ProgressDialog pg = new ProgressDialog(getContext());
    pg.show();

    apiService.getKategori(app_api,"user_name","pass").enqueue(new Callback<ResponKategori>() {
        @Override
        public void onResponse(Call<ResponKategori> call, Response<ResponKategori> response) {

            pg.dismiss();

            try {

                if (response.body().getError() == false) {
                    final String[] itemListKategori = new String[15];
                    itemListKategori[0] = response.body().getData().get1().toString();
                    itemListKategori[1] = response.body().getData().get2().toString();
                    itemListKategori[2] = response.body().getData().get3().toString();
                    itemListKategori[3] = response.body().getData().get4().toString();
                    itemListKategori[4] = response.body().getData().get5().toString();
                    itemListKategori[5] = response.body().getData().get6().toString();
                    itemListKategori[6] = response.body().getData().get7().toString();
                    itemListKategori[7] = response.body().getData().get8().toString();
                    itemListKategori[8] = response.body().getData().get9().toString();
                    itemListKategori[9] = response.body().getData().get10().toString();
                    itemListKategori[10] = response.body().getData().get11().toString();
                    itemListKategori[11] = response.body().getData().get12().toString();
                    itemListKategori[12] = response.body().getData().get13().toString();
                    itemListKategori[13] = response.body().getData().get14().toString();
                    itemListKategori[14] = response.body().getData().get15().toString();

                    /*AdapterKategori adapterKategori = new AdapterKategori();
                    LinearLayoutManager llm = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
                    kategoriRv.setLayoutManager(llm);
                    kategoriRv.setAdapter(adapterKategori);*/

                    kategoriLv.setAdapter(new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item,  itemListKategori));

                    kategoriLv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                        @Override
                        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                            startActivity(new Intent(getContext(),AdminPanelFragment.class).putExtra("Title",itemListKategori[position]));
                            return true;
                        }
                    });

                        } else {
                            Toast.makeText(getContext(), "Failed", Toast.LENGTH_SHORT).show();
                        }

                    } catch (Exception e) {
                        pg.dismiss();
                        Toast.makeText(getContext(), "Failed: " + e, Toast.LENGTH_SHORT).show();
                        Log.e("errorRead", "" + e.toString());
                    }
                        }

        @Override
        public void onFailure(Call<ResponKategori> call, Throwable t) {
            pg.dismiss();
            Toast.makeText(getContext(), "Failed " + t, Toast.LENGTH_SHORT).show();
            Log.e("errorRead", "" + t.toString());
        }
    });
}
        @Override
        public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
     }
}

Here's I put logcat too:

08-04 13:41:15.935 2531-2531/dummy.project.sobud E/AndroidRuntime: FATAL EXCEPTION: main
Process: dummy.project.sobud, PID: 2531
android.content.ActivityNotFoundException: Unable to find explicit activity class {dummy.project.sobud/dummy.project.sobud.admin_panel.AdminPanelFragment}; have you declared this activity in your AndroidManifest.xml?
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1820)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1531)
    at android.app.Activity.startActivityForResult(Activity.java:4404)
    at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
    at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:230)
    at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:806)
    at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:920)
    at android.support.v4.app.Fragment.startActivity(Fragment.java:908)
    at android.support.v4.app.Fragment.startActivity(Fragment.java:897)
    at dummy.project.sobud.kategori.KategoriFragment$1$1.onItemLongClick(KategoriFragment.java:105)
    at android.widget.AbsListView.performLongPress(AbsListView.java:4223)
    at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:4122)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
  • *`my App crash`* You need to share that crash log with question – AskNilesh Aug 04 '18 at 09:23
  • @NileshRathod already added with that question. – Sonia Sanny Aug 04 '18 at 09:25
  • exception `android.content.ActivityNotFoundException: Unable to find explicit activity class {dummy.project.sobud/dummy.project.sobud.admin_panel.AdminPanelFragment}; have you declared this activity in your AndroidManifest.xml?` clearly say that did you add activity in Manifest file? – Hemant Parmar Aug 04 '18 at 09:28
  • @HemantParmar well, AdminPanelFragment is a Fragment not Activity. – Sonia Sanny Aug 04 '18 at 09:31
  • that's why you app is crashing, you can's navigate fragment via intent as you did in list long press item click. – Hemant Parmar Aug 04 '18 at 09:33
  • For achieve this, create new activity inside this call your AdminPanelFragment and declare these activity in your Manifest file. this will work properly. – Hemant Parmar Aug 04 '18 at 09:35
  • @HemantParmar so, what should I write? – Sonia Sanny Aug 04 '18 at 09:35
  • You cannot open a fragment like that. You have to declare an activity with a framelayout which holds the fragment. Then open that activity and direct to any one of the fragment. – sanjeev Aug 04 '18 at 09:39
  • The way you're implementing opening a `Fragment` is the way you should open an `Activity` not a `Fragment`. You should call your parent `Activity` from your `Fragment` and replace the `Fragment` like [this question](https://stackoverflow.com/questions/5658675/replacing-a-fragment-with-another-fragment-inside-activity-group). – Mr.O Aug 04 '18 at 09:47
  • @sanjeev can you show me an example, please? – Sonia Sanny Aug 06 '18 at 08:24

1 Answers1

0

You can't not directly open Open AdminPanelFragment Fragment in stand of activity while ListView setOnItemLongClickListener.

Mehul Kabaria
  • 6,404
  • 4
  • 25
  • 50