Android中的DialogFragment
对话框是一种无需为用户创建新活动即可显示更简洁信息或可访问性选项的方式。当我们必须向用户显示更多选项和内容时,这非常有用,为此,我们不想创建一个全新的屏幕,我们希望用户留在同一个屏幕上并且我们想向他显示一个对话框它漂浮在前一个屏幕上。之后,我们希望对从对话框中选择的选项进行操作。几乎,在每一个好的应用程序中,你都会看到对话框的完美用法。从用户体验的角度来看,DialogFragment 也是一个非常好的安卓开发实用类。在本文中,我们将了解 DialogFragment 在实际应用程序中的介绍、重要方法和实现。
什么是对话框片段?
DialogFragment 是 android 开发的实用程序类,用于显示 Dialog 窗口,浮动在 android 应用程序中的活动窗口之上。此功能在 API 级别 11 上添加,在 API 级别 28 上已弃用。它有自己的生命周期,这使得此类对于创建对话框非常有用。这是一个示例视频,用于了解我们将在本文中构建什么以及对话片段实际上是什么 -
DialogFragment 的方法
下面给出了控制DialogFragment流程的方法,正确使用这些方法可以有效控制对话框。
- onAttach()
- onCreate()
- onCreateDialog()
- onCreateView()
- onViewCreated()
- onDestroy()
DialogFragment的实际实现
我们将在一个真实的 android 应用程序中实现 DialogFragment。我们将创建一个新项目,如果您已经在处理任何旧项目并希望在该项目中实现对话框片段,您也可以这样做。
第 1 步:开始一个新的 android studio 项目
- 首先启动android studio
- 在 android studio 的主屏幕上,您将看到一个名为Create a new project 的选项。
- 给出项目名称并填写所有其他字段,然后单击下一步
- 另外,选择空活动并单击完成
第 2 步:完成应用程序的前置任务
在我们开始开发我们的应用程序之前,我们应该先进行一些更改。现在我们必须对 App Level Gradle 文件进行一些更改,为此转到Gradle Scripts > Build.gradle(Module:app)并导入以下依赖项并单击Sync now。
implementation 'com.android.support:design:28.0.0'
第 3 步:使用 activity_main.xml 文件 -
我们必须遵循的下一步是 acitivity_main.xml 的用户界面设计,对于那个 go-to app->res->Layout->activity_main.xml然后粘贴下面的 XML 代码。
XML
XML
Java
package com.example.dialogfragment;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btnFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnFragment=findViewById(R.id.btnFragment);
btnFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment dialogFragment=new DialogFragment();
dialogFragment.show(getSupportFragmentManager(),"My Fragment");
}
});
}
}
Java
package com.example.dialogfragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class DialogFragment extends androidx.fragment.app.DialogFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.dailog_fragment,container,false);
}
}
第 4 步:为 DialogFragment 设计 UI
下一步是完成 DialogFragment 的设计,为此转到res > layout > 右键单击 > new > layout 资源文件并将其命名为dialog_fragment.xml 。在其中使用以下代码-
XML
第 5 步:使用 MainActivity。Java
转到 MainActivity。 Java文件并参考以下代码。下面是 MainActivity 的代码。 Java文件。
Java
package com.example.dialogfragment;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btnFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnFragment=findViewById(R.id.btnFragment);
btnFragment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment dialogFragment=new DialogFragment();
dialogFragment.show(getSupportFragmentManager(),"My Fragment");
}
});
}
}
第 6 步:使用 DialogFragment。Java
使用 DialogFragment 方法扩展此类。制作一个 OnCreateView 并在里面使用,inflater 来为已经创建的 Dialog Box 的 UI 充气。这是 DialogFragment 的所有代码。 Java,您可以将其粘贴在您的包名之后。
Java
package com.example.dialogfragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class DialogFragment extends androidx.fragment.app.DialogFragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.dailog_fragment,container,false);
}
}
输出:
这是应用程序的输出: