gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:26 24 4
gpt4 key购买 nike

起初,我的主要问题是如何从同一个类中调用方法,即使很难,我认为我找到了一种方法来做到这一点,但它没有按我的预期工作,我想知道什么是适合我的情况的最佳方法。

这是我正在处理的代码:

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

此类是一个 Activity ,当用户滑动时,按钮中的文本和图像将发生变化,即使它们的 ID 保持不变。 (这是由另一个类控制的,运行良好)。

现在,我希望 Activity 上的图像按钮根据选择的页面执行不同的操作,这就是为什么在页面更改监听器内的 onPageSelected 方法上有一个初始开关。布局中的图像按钮具有 android:onClick="ShowPopup" 标签,我想如果我希望它在同一 Activity 中做不同的事情,这对我来说也会让事情变得复杂?另外,每次我更改页面并返回到弹出窗口将打开的第一个页面时,在交换机上以这种方式调用它,因为我的调用在那里是明确的。 (正如我所说,即使很困难,我也找到了一种方法来以某种方式调用我的方法,或者至少是它的结果,它没有按我的预期工作)。

编辑

我尝试像这样更改它,这样按钮就不会依赖 android:onClick="ShowPopup" 标签,也不需要直接在开关上调用 void 方法:

已添加

public ImageButton popupchoice;

还有 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: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at .EscolhaAtendimento$1.onPageSelected(EscolhaAtendimento.java:81)

Line 81 is the one inside the switch with the popupchoice.setOnClickListener(image1).

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

最佳答案

我认为你可以使用

EscolhaAtendimento.this.ShowPopup 从您的交换机内部。

关于java - 从同一个类中的另一个方法调用 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60265417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com