【问题标题】:setOnItemLongClick() doesn't work in Fragment [duplicate]setOnItemLongClick() 在片段中不起作用 [重复]
【发布时间】:2018-08-04 09:20:55
【问题描述】:

我有一个来自 Json API 的 ListView。但是,当我想单击或选择其中一个时,我的应用程序崩溃 a.ka 强制关闭。有人可以帮我吗?我花了很多时间试图解决这个问题。即使我在这里阅读了几天与此问题相关或类似的讨论,也无济于事。谢谢! :)

这是源代码:

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();
     }
}

这里我也放了 logcat:

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 您需要与问题共享该崩溃日志
  • @NileshRathod 已经添加了该问题。
  • 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? 明确表示您是否在 Manifest 文件中添加了活动?
  • @HemantParmar 好吧,AdminPanelFragment 是 Fragment 而不是 Activity。
  • 这就是您的应用程序崩溃的原因,您可以像在列表长按项目单击中那样通过意图导航片段。

标签: android android-intent fragment onitemlongclicklistener


【解决方案1】:

你不能不直接打开打开AdminPanelFragmentFragment in stand of activity while ListViewsetOnItemLongClickListener.

【讨论】:

  • 那么,我应该写什么呢?
  • AdminPanelFragment 是 Fragment 我对吗?
  • 是的,没错。
  • 那么你应该在片段的立场上打开活动。而Activity 必须在AndroidManifest 文件中声明
猜你喜欢
  • 2018-10-30
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 2020-02-03
  • 2014-10-02
相关资源
最近更新 更多