Java 如何通过适配器访问片段元素?
我有LoginActivity.class,它在onCreate()上使用适配器 LoginAdapter.classJava 如何通过适配器访问片段元素?,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,我有LoginActivity.class,它在onCreate()上使用适配器 LoginAdapter.class public class LoginAdapter extends FragmentPagerAdapter { private Context context; int totalTabs; public LoginAdapter(@NonNull FragmentManager fm,Context context, int totalTabs) { super
public class LoginAdapter extends FragmentPagerAdapter {
private Context context;
int totalTabs;
public LoginAdapter(@NonNull FragmentManager fm,Context context, int totalTabs) {
super(fm);
this.context = context;
this.totalTabs = totalTabs;
}
@Override
public int getCount() {
return totalTabs;
}
public Fragment getItem(int position){
switch (position){
case 0:
LoginTabFragment loginTabFragment = new LoginTabFragment();
return loginTabFragment;
case 1:
RegisterTabFragment registerTabFragment = new RegisterTabFragment();
return registerTabFragment;
default:
return null;
}}}
LoginTabFragment.class
public class LoginTabFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.login_tab_fragment, container, false);
return root;
}}
LoginActivity需要访问login_tab_fragment.xml中的字段
userNameInput=findviewbyd(R.id.login\u username\u input);
passwordInput=findViewById(R.id.login\u password\u input);
loginBtn=FindView wByd(R.id.login_uemail_ulogin_uBTN);
loginBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
我得到了NPE:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)”
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)上
如何在LoginActivity中访问LoginTabFragment元素?谢谢。您可以在活动中定义可以调用的公共方法
public void responseFromFragment(View v){
//do your things in activity
}
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((YourActivityClassName)getActivity()).responseFromFragment(v);
}
你可以在Fragment中做任何事情,你不需要将ref传递给activity,请了解有关Fragment的更多信息我认为你的问题可能只是在调用
loginBtn=findViewById(R.id.login\u email\u login\u btn)时找不到你的按钮代码>因此为null
。虽然这可能是错误的,但这仅仅是简单的一瞥。他在活动中调用片段视图
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((YourActivityClassName)getActivity()).responseFromFragment(v);
}