簡體   English   中英

我如何從 Android Studio 的 Mainactivity 中的 Dialog 做出反應?

[英]How can i react from Dialog in Mainactivity in Android Studio?

如果用戶正在錄制他的聲音,我為我的對話框創建了 Java Class。 我如何對單擊停止按鈕做出反應? 我想在我的主要活動中停止錄制。

這是我的對話框的代碼:

public class RecordDialog extends AppCompatDialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Recording...")
            .setIcon(R.drawable.ic_record)
            .setPositiveButton ("Stop", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });


    return builder.create();
}

}

主要活動:

 public void openRecordDialog(View view) {
    if (view.getId() == R.id.btnRec1) {
        record();

        RecordDialog recordDialog = new RecordDialog();
        recordDialog.show(getSupportFragmentManager(), "Recording...");
    }
}

private void record() {
    try {
        mediaRecorder.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private void stop(){
    mediaRecorder.stop();
    mediaRecorder.release();
    
    
    
}

通過單擊 MainActivity 中的按鈕,方法 openRecordDialog() 將由 onClick 啟動。

如何通過單擊對話框中的正按鈕來啟動停止方法?

謝謝

我想知道,處理該問題的最佳方法是從onCreateDialog方法中提取用於設置 onclick 的接口:

public class RecordDialog extends AppCompatDialogFragment {
    private DialogInterface.OnClickListener OnStopListener;
    
    public RecordDialog(DialogInterface.OnClickListener onStopListener){
        //EDIT: calling super constructor to initialize the dialog properly 
        super();
        OnStopListener = onStopListener;
    }
    
    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Recording...")
                .setIcon(R.drawable.ic_record)
                .setPositiveButton ("Stop", OnStopListener);
        return builder.create();
    }
}

然后你像這樣使用它:

public void openRecordDialog(View view) {
    if (view.getId() == R.id.btnRec1) {
        ...

        RecordDialog recordDialog = new RecordDialog(
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //Calling your function to stop the recording
                    stop();
                }
            }
        );
        ...
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM