[英]I Want to use fragment UI element id in mainactivity java class to accomplish on click listener event on mainactivity class instead of fragment class
這是我的代碼您可以在類中看到我已將 id 聲明為 onclick 偵聽器,並且每個似乎都沒有問題,錯誤為 0,但是當我運行該應用程序時,它崩潰並顯示“嘗試調用虛擬方法 'void android.view .View.setOnClickListener(android.view.View$OnClick" 有什么我必須寫下來才能在使用它之前在我的主要活動類中使用片段元素的嗎??任何貢獻都會有所幫助。
package com.login.mobi.loginapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager2.widget.ViewPager2;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import com.google.android.material.tabs.TabLayout;
import java.util.Calendar;
public class MainActivates extends AppCompatActivity {
EditText et1;
TabLayout tabLayout;
ViewPager2 pager2;
FragmentAdapter adapter;
Calendar calendar=Calendar.getInstance();
final int year=calendar.get(Calendar.YEAR);
final int month=calendar.get(Calendar.MONTH);
final int day=calendar.get(Calendar.DAY_OF_MONTH);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mains);
EditText txt10=findViewById(R.id.txtnum10);
tabLayout = findViewById(R.id.tab_layout);
pager2 = findViewById(R.id.view_pager2);
FragmentManager fm = getSupportFragmentManager();
adapter = new FragmentAdapter(fm, getLifecycle());
pager2.setAdapter(adapter);
tabLayout.addTab(tabLayout.newTab().setText("Primary info"));
tabLayout.addTab(tabLayout.newTab().setText("Next"));
tabLayout.addTab(tabLayout.newTab().setText("Finish-up"));
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager2.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
et1=(EditText) findViewById(R.id.et1);
et1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog datePickerDialog=new DatePickerDialog(
MainActivates.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
month =month+1;
String date=day+"/"+month+"/"+year;
et1.setText(date);
}
},year,month,day);
datePickerDialog.show();
}
});
pager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
tabLayout.selectTab(tabLayout.getTabAt(position));
}
});
}
}
````
看來您正在嘗試在空對象上調用setOnClickListener
。 我猜你的片段還沒有膨脹。
我會在片段中設置 OnClickListener 並從片段中調用活動中的方法:
if (requireActivity() instanceof MainActivity) {
((MainActivity) requireActivity()).magicMethod(); // implement magicMethod in your Activity
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.