从java类调用activity方法

时间:2012-03-16 14:29:29

标签: java android android-activity

我想看看是否有人可以帮我解决我的问题,即我在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();


    }

1 个答案:

答案 0 :(得分:0)

你有一个封装问题......活动类不在当前堆栈的顶部,而showMessage()方法不是静态的。

您应该从Activity类内部而不是Java overlay类控制应用程序逻辑(遵循MVVM逻辑,即MVC,其中活动是您的控制器)。最好的选择是将对话框/覆盖对象封装在Activity中,并在Activity类中设置逻辑(在overlay类中创建适当的方法来执行此操作)或者只创建Activity的覆盖和内部类。这样你就可以做到你想要做的事情。

希望有所帮助。