从java类调用活动方法
我想知道是否有人能帮我解决我的问题,那就是我在java类中有一个自定义对话框。此自定义对话框有一个按钮,按下该按钮时将从我的活动类调用一个方法。当我运行代码时,什么都没有发生,似乎从来没有调用过该方法,也没有给出错误,我这样做的原因是因为java类被用于overlayitems。下面是我拥有的代码片段,为任何对这个问题有见解的人干杯 overlayitem的Java类从java类调用活动方法,java,android,android-activity,Java,Android,Android Activity,我想知道是否有人能帮我解决我的问题,那就是我在java类中有一个自定义对话框。此自定义对话框有一个按钮,按下该按钮时将从我的活动类调用一个方法。当我运行代码时,什么都没有发生,似乎从来没有调用过该方法,也没有给出错误,我这样做的原因是因为java类被用于overlayitems。下面是我拥有的代码片段,为任何对这个问题有见解的人干杯 overlayitem的Java类 public boolean onTap(int index) { OverlayItem item = map
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();
}
您有封装问题。。。activity类不在当前堆栈的顶部,showMessage()方法不是静态的 您应该从Activity类而不是Java overlay类内部控制应用程序逻辑(遵循MVVM逻辑,即MVC,其中Activity是您的控制器)。最好的选择是将对话框/覆盖对象封装在活动中,并在活动类中设置逻辑(在覆盖类中创建适当的方法来实现这一点),或者只创建活动的覆盖和内部类。这将允许你做你想做的事情
希望对您有所帮助。在showMessage中编写一些log语句或sysout语句,检查它们是否反映在logcat中。首先在您的catch中记录一些内容。然后考虑静态调用非静态方法。最后,试着看看你对视图中的活动有什么引用(上下文,可能是?),你能编译它吗?看起来您试图调用静态(类)方法,但只声明了实例方法。