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("•"));
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();
}
};