Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在用户从自定义对话框输入后启动方法的问题_Java_Android - Fatal编程技术网

Java 在用户从自定义对话框输入后启动方法的问题

Java 在用户从自定义对话框输入后启动方法的问题,java,android,Java,Android,这是我的情况。在我的程序中,用户按下按钮,出现一个自定义对话框,请求输入。一旦用户完成,我需要这些信息通过TextView和ImageView反映在事先运行的活动中。我有一个方法可以做到这一点,但问题是一旦用户点击原始按钮,代码就会进入下一个方法,该方法反映了更改。我正在寻找一种方法,让程序等到对话框结束后再继续下一个更新信息的方法。最好的办法是什么?非常感谢您的帮助 我曾尝试使用DialogFragment更新代码,但现在我收到一个错误,指出存在类型不匹配,无法将BetType转换为Dialo

这是我的情况。在我的程序中,用户按下按钮,出现一个自定义对话框,请求输入。一旦用户完成,我需要这些信息通过TextView和ImageView反映在事先运行的活动中。我有一个方法可以做到这一点,但问题是一旦用户点击原始按钮,代码就会进入下一个方法,该方法反映了更改。我正在寻找一种方法,让程序等到对话框结束后再继续下一个更新信息的方法。最好的办法是什么?非常感谢您的帮助

我曾尝试使用DialogFragment更新代码,但现在我收到一个错误,指出存在类型不匹配,无法将BetType转换为DialogFragment。我有一个名为BetType的类,它扩展了DialogFragment。我下面的例子是“我在网上看到的,它们的结构都是一样的。”。我又一次陷入停滞

   private void selectBets() {
     if (betType != 1) {
       DialogFragment dialog = BetType(); //My error is here now
       dialog.show(getSupportFragmentManager(), "bettype_Dialog");
     }
    }

在对话框中构建侦听器接口。 让您的呼叫框架或活动实施它

private OnFinishListener mOnFinishListener;

// Container Fragment must implement this interface
public interface OnFinishListener
{
    public void OnFinish();
}

public void onAttachFragment(Fragment fragment)
{
    try
    {
        mOnFinishListener = (OnFinishListener) fragment;

    } catch (ClassCastException e)
    {
        throw new ClassCastException(fragment.toString() + " must implement OnFinishListener");
    }
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    Log.i(TAG, "onCreateDialog");
    onAttachFragment(getParentFragment());
    ...
}
然后把它放在任何你想让调用活动或片段知道的地方

if (mOnFinishListener != null)
    mOnFinishListener.OnFinish();
您的活动或片段需要实现它并调用displayBets

@Override
public void OnFinish() 
{   
    displayBets();
}

您可能应该使用a来监听对话框的OK按钮或其他等效按钮的单击。侦听器可以调用displayBets。有关如何使用此类侦听器的几个示例,请参见。

问题:我的自定义对话框是它自己的类,带有自定义xml。由于它在不同的类cybersam中,它可以调用displayBets吗?仅仅因为对话框可能有自己的XML布局,并不意味着它有自己的类。有关如何使用自定义对话框布局的示例,请参见。displayBets和onCreateDialog可以在同一个片段中。但是,即使它们在不同的类中,其中一个应该仍然能够导入和使用另一个。嘿@Cybersam,我刚刚更新了我的代码以反映我们之前讨论的更改。出于某种原因,我的代码似乎无法将BetType识别为dialogFragment。任何帮助都将不胜感激。谢谢。我只是想和大家分享我终于明白了。在导入和片段管理器方面经历了一段艰难的时光,但我最终得到了它。谢谢你的帮助他们,我很高兴你让它工作了!也请考虑接受我的回答。谢谢。我将尝试实施你的建议,我将告诉你它是如何实现的。