我想看看是否有人可以帮我解决我的问题,即我在java类中有一个自定义对话框。此自定义对话框有一个按钮,按下该按钮将调用我的活动类中的方法。当我运行代码没有任何反应时,似乎永远不会调用该方法并且也没有给出错误,因此我尝试这种方式的原因是因为java类被用于overlayitems。下面是我所拥有的代码的嗤之以鼻,为有问题洞察力的人欢呼
overlayitem的Java类
public boolean onTap(int index) {
OverlayItem item = mapOverlays.get(index);
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog);
dialog.setTitle(item.getTitle());
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText(item.getSnippet());
Button CallButton = (Button) dialog.findViewById(R.id.CallButton);
CallButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
try {
TheActivityClass.showMessage();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
}
);
dialog.show();
return true;
}
活动类
public void showMessage(){
Context context = getApplicationContext();
CharSequence text = "I have just been pressed";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
答案 0 :(得分:0)
你有一个封装问题......活动类不在当前堆栈的顶部,而showMessage()方法不是静态的。
您应该从Activity类内部而不是Java overlay类控制应用程序逻辑(遵循MVVM逻辑,即MVC,其中活动是您的控制器)。最好的选择是将对话框/覆盖对象封装在Activity中,并在Activity类中设置逻辑(在overlay类中创建适当的方法来执行此操作)或者只创建Activity的覆盖和内部类。这样你就可以做到你想要做的事情。
希望有所帮助。