Android官方DialogFragemnt
阿新 • • 發佈:2019-01-02
MainActivity:
package com.ruru.dialogfragment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener, LoginDialogFragment.LoginInputListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_01).setOnClickListener(this); findViewById(R.id.btn_02).setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btn_01: showDialog(); break; case R.id.btn_02: showLoginDialog(); break; default: break; } } /** * 顯示對話方塊---onCreateDialog---LoginDialogFragment */ private void showLoginDialog() { LoginDialogFragment loginDialogFragment = new LoginDialogFragment(); loginDialogFragment.show(getSupportFragmentManager(), "loginDialog"); } /** * 顯示對話方塊---onCreateView---MyDialogFragment * remember:DialogFragment匯入的包是v4包,不是app下的,否則show()方法會報錯 */ private void showDialog() { MyDialogFragment myDialogFragment = new MyDialogFragment(); myDialogFragment.show(getSupportFragmentManager(), "DialogFragment"); } /** * MainActivity實現LoginInputListener介面 */ @Override public void onLoginInputComplete(String username, String password) { Toast.makeText(this, "使用者名稱===" + username + " 密碼===" + password, Toast.LENGTH_SHORT).show(); } }
MyDialogFragment:
LoginDialogFragment:package com.ruru.dialogfragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; /** * Created by 27c1 on 2017/1/7. */ public class MyDialogFragment extends DialogFragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //去掉預設dialog的標題 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); View dialogView = inflater.inflate(R.layout.layout_dialog, null); return dialogView; } }
layout_dialog:package com.ruru.dialogfragment; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; /** * Created by 27c1 on 2017/1/7. */ public class LoginDialogFragment extends DialogFragment { private EditText et_username; private EditText et_password; /** * 介面 */ public interface LoginInputListener { void onLoginInputComplete(String username, String password); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); View loginView = LayoutInflater.from(getActivity()).inflate(R.layout.layout_login, null); et_username = (EditText) loginView.findViewById(R.id.et_username); et_password = (EditText) loginView.findViewById(R.id.et_password); builder.setView(loginView); builder.setPositiveButton("signin", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //建立介面類並呼叫介面方法 LoginInputListener listener = (LoginInputListener) getActivity(); listener.onLoginInputComplete(et_username.getText().toString(), et_password.getText().toString()); } }); AlertDialog loginDialog = builder.create(); // builder.show();---不能寫 會報錯 return loginDialog; } }
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="大家好"
android:gravity="center"/>
</LinearLayout>
</LinearLayout>
layout_login:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入使用者名稱" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入密碼" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登入" />
</LinearLayout>
</LinearLayout>
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.ruru.dialogfragment.MainActivity">
<Button
android:id="@+id/btn_01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="showDialog" />
<Button
android:id="@+id/btn_02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="showLoginDialog" />
</LinearLayout>
友情連結: