[英]How can I do not use constructor in MainActivity in Android Studio?
[英]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.