如何从另一个动作设置"活动"的内容视图



我正在制作一个音乐播放器。每当用户点击ImageView时,就会出现一个对话框。对话框中会有一个开关。我想说的是,每当用户将开关打开时,我都想将MainActivity.javaContentView更改为自定义布局文件。我该怎么做。

任何建议都将被接受。。感谢

我会在对话框中添加一个回调,您只需调用它来设置内容,类似

class MyDialog(val switchChangedCallback: (Boolean) -> Unit) : DialogFragment() ...

当您更改开关时,调用回调并在Activity:中处理结果

val dialog = MyDialog(switchChangedCallback = { isOn ->
if (isOn) {
setContentView(R.layout.abc)
} else {
setContentView(R.layout.def)
}
})
dialog.show(supportFragmentManager, MyDialog::class.java.name)

您可能需要检查回调是否能在应用程序轮换中幸存!

您可以尝试below code。。。

对话:

Dialog dialogue = new Dialog(MainActivity.this);
dialogue.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialogue.setCancelable(false);
dialogue.setContentView(R.layout.dialogue);
Switch mySwitch = (Switch) dialogue.findViewById(R.id.MYSWITCH);
Button btnClose = (Button) dialogue.findViewById(R.id.CLOSEBTN);

mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
setContentView(R.layout.layout1);
}
else{
setContentView(R.layout.layout2);
}
}
});
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogue.dismiss();
}
});
dialogue.show();

对话.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:padding="16dp"
android:orientation="vertical"
android:layout_height="match_parent">

<Switch
android:id="@+id/MYSWITCH"
android:text="Change Layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<Button
android:id="@+id/CLOSEBTN"
android:text="Close"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

正如您的问题所说,您需要在对话中切换,因此我们需要创建自定义对话布局并将其应用于对话!

最新更新