从"活动"退出后,片段上的OnItemClickListener无法工作



我有一个Fragment,该片段使用GridView显示项目。当项目被点击时,它将打开新的活动,并从片段中带来一些Intent键。

问题是在我从活动返回到Fragment GridView之后OnItemClickListener不工作。每个按钮只工作一次。

它只工作第一次,或者我必须返回MainActivity,它将再次工作,但只工作一次。

这是我的片段代码:

public class MaulidFragment extends Fragment implements Constant {
private Context context;
private KitabAdapter adapter;
private ArrayList<KitabDataModel> arrayList;
private String kitab_jenis, kitab_judul, kitab_file;
private GridView gridView;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
this.context = context;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_kitab_layout_gridview, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
loadGridView(view);
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
private void loadGridView(View view) {
gridView = view.findViewById(R.id.grid_view);
arrayList = KitabData.getKitabData(context);
adapter = new KitabAdapter(context, arrayList);
gridView.setAdapter(adapter);
adapter.filter("Maulid","");
gridView.setOnItemClickListener((parent, view1, position, id) -> {
new AnimationUtils().pushdownAnimButtonKitab(view1);
kitab_jenis = arrayList.get(position).getKitab_jenis();
kitab_judul = arrayList.get(position).getKitab_judul();
kitab_file = arrayList.get(position).getFile();
Intent intent = new Intent(requireContext(), KitabBookPDF.class);
intent.putExtra(pdf_file, kitab_file);
intent.putExtra(toolbar_title, kitab_jenis + " " + kitab_judul);
startActivity(intent);
});
}
}

这就是活动:

public class KitabBookPDF extends AppCompatActivity
implements OnPageChangeListener, Constant {
Toolbar toolbar;
Integer pageNumber = 0;
PDFView pdfView;
// Intent
Intent intent;
Bundle extras;
String pdfFile, toolbarTitle;
long lastPress;
Toast backpressToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kit_pdfview);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getDataIntent();
//PDF
pdfView = findViewById(R.id.pdfView);
// Toolbar setup
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(view -> onBackPressed());
new PDFViewUtils().setPdfViewLocalFile(this, pdfView, pdfFile, pageNumber);
}
@Override
public void onBackPressed() {
long currentTime = System.currentTimeMillis();
if (currentTime - lastPress > backPressKitabPage) {
backpressToast = Toast.makeText(getBaseContext(), getText(R.string.back_toast), Toast.LENGTH_LONG);
backpressToast.show();
lastPress = currentTime;
} else {
if (backpressToast != null) backpressToast.cancel();
showInterstitial();
}
}
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
String judulhalaman = toolbarTitle;
toolbar.setTitle(String.format("%s - %s / %s", judulhalaman, page + 1, pageCount));
}
private void getDataIntent(){
intent = getIntent();
extras = intent.getExtras();
assert extras != null;
pdfFile = extras.getString(pdf_file);
toolbarTitle = extras.getString(toolbar_title);
}
@Override
protected void onStop() {
super.onStop();
pdfView.destroyDrawingCache();
}
@Override
protected void onDestroy() {
super.onDestroy();
pdfView.destroyDrawingCache();
}
}

我在这里错过了什么。如何解决此问题?

看起来您覆盖了onBackPressed(),但没有调用它的super。当您覆盖此项时,如果您希望能够返回,则应将super.onBackPressed()保存在其中:(所以,你的代码应该是这样的:

@Override
public void onBackPressed() {
super.onBackPressed()
long currentTime = System.currentTimeMillis();
if (currentTime - lastPress > backPressKitabPage) {
backpressToast = Toast.makeText(getBaseContext(), getText(R.string.back_toast), Toast.LENGTH_LONG);
backpressToast.show();
lastPress = currentTime;
} else {
if (backpressToast != null) backpressToast.cancel();
showInterstitial();
}
}

或者如果你只需要在currentTime - lastPress > backPressKitabPage的情况下返回,那么如果块:(,就把它移到里面

问题与Liblary 冲突

com.github.thekhaeng:向下点击动画:1.1.1

最新更新