簡體   English   中英

我想在 mainactivity java 類中使用片段 UI 元素 id 來完成 mainactivity 類而不是片段類上的單擊偵聽器事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM