Java 从同一类中的另一个方法调用void方法

Java 从同一类中的另一个方法调用void方法,java,android,Java,Android,起初,我的主要问题是如何从同一个类中调用一个方法,即使很难,我想我找到了一种方法来做到这一点,它并没有像我预期的那样工作,我想知道什么是处理我的案例的最佳方法 这是我正在研究的代码: public class EscolhaAtendimento extends AppCompatActivity { private ViewPager mSlideViewPager; private LinearLayout mDotLayout; String TAG = "Ta

起初,我的主要问题是如何从同一个类中调用一个方法,即使很难,我想我找到了一种方法来做到这一点,它并没有像我预期的那样工作,我想知道什么是处理我的案例的最佳方法

这是我正在研究的代码:

public class EscolhaAtendimento extends AppCompatActivity {

    private ViewPager mSlideViewPager;
    private LinearLayout mDotLayout;

    String TAG = "TasksSample";

    private TextView[] mDots;

    private SliderAdapter sliderAdapter;
    Dialog myDialog;

    @Override
    public void onCreate (Bundle SavedInstanceState){
        super.onCreate(SavedInstanceState);
        setContentView(R.layout.escolha_atendimento);

        mSlideViewPager = findViewById(R.id.slideViewPager);
        mDotLayout = findViewById(R.id.dotsLayout);



        sliderAdapter = new SliderAdapter(this);
        mSlideViewPager.setAdapter(sliderAdapter);
        addDotsIndicator(0);
        mSlideViewPager.addOnPageChangeListener(viewListener);
        myDialog = new Dialog(this);
    }

    public void addDotsIndicator(int position){

        mDots = new TextView[8];
        mDotLayout.removeAllViews();

        for (int  i= 0; i < mDots.length; i++){
            mDots[i] = new TextView(this);
            mDots[i].setText(Html.fromHtml("&#8226;"));
            mDots[i].setTextSize(35);
            mDots[i].setTextColor(getResources().getColor(R.color.colorTransparentWhite));

            mDotLayout.addView(mDots[i]);
        }

        if (mDots.length > 0){
            mDots[position].setTextColor(getResources().getColor(R.color.colorWhite));
        }

    }

    ViewPager.OnPageChangeListener viewListener = new ViewPager.OnPageChangeListener(){

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected (int i) {

            switch (i) {

                case 0: {

                    myDialog.show();

                }

                addDotsIndicator(i);
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    };

   public void ShowPopup(View v) {
            TextView txtclose;
            //Button btnFollow;
            myDialog.setContentView(R.layout.pop_upfinal);
            txtclose = myDialog.findViewById(R.id.txtclose);
            txtclose.setText("X");
            //btnFollow = (Button) myDialog.findViewById(R.id.btnfollow);
            txtclose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myDialog.dismiss();
                }
            });
            myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            myDialog.show();
    }
}
这也适用于onCreate方法:

popupchoice = this.findViewById(R.id.imgslide1);
在开关内部,我这样称呼它以获得按钮ID:

popupchoice.setOnClickListener(image1);
并将View.OnClickListener设置为:

View.OnClickListener image1 = new View.OnClickListener() {
        public void onClick(View v) {
            TextView txtclose;
            //Button btnFollow;
            myDialog.setContentView(R.layout.pop_upfinal);
            txtclose = myDialog.findViewById(R.id.txtclose);
            txtclose.setText("X");
            //btnFollow = (Button) myDialog.findViewById(R.id.btnfollow);
            txtclose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myDialog.dismiss();
                }
            });
            myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            myDialog.show();
        }
    };
但这让我回想起:

java.lang.NullPointerException:尝试在.EscolhaAtendimento$1.onPageSelected(EscolhaAtendimento.java:81)

第81行是带有popupchoice.setOnClickListener(图1)的开关内的一个空对象引用上调用虚拟方法“void android.view.view.setOnClickListener(android.view.view$OnClickListener)”

此错误发生在页面更改时,当返回到第一页时,并且按钮单击不再起作用

我想你可以用

EscolhaAtendimento.这个.show弹出窗口是从交换机内部弹出的

我想你可以用


EscolhaAtendimento.这个.show弹出窗口是从交换机内部弹出的

我试过类似的方法,比如ShowPopup();就像你说的,但它不会编译。正如你所回答的,它告诉我它无法解决这个问题。和显示弹出窗口(视图v);它无法从开关中解析符号v;就像你说的,但它不会编译。正如你所回答的,它告诉我它无法解决这个问题。和显示弹出窗口(视图v);它无法从交换机内解析符号v。
View.OnClickListener image1 = new View.OnClickListener() {
        public void onClick(View v) {
            TextView txtclose;
            //Button btnFollow;
            myDialog.setContentView(R.layout.pop_upfinal);
            txtclose = myDialog.findViewById(R.id.txtclose);
            txtclose.setText("X");
            //btnFollow = (Button) myDialog.findViewById(R.id.btnfollow);
            txtclose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    myDialog.dismiss();
                }
            });
            myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            myDialog.show();
        }
    };