Android开发之fragment之replace用法
生活随笔
收集整理的這篇文章主要介紹了
Android开发之fragment之replace用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們先來寫個接口:
package com.xiayiye.yhsh.fragmentreplace;import android.os.Bundle;/*** @author :下一頁5(輕飛揚)* 創建時間:2018/6/7.10:01*/ public interface PaymentListener {/*** 跳轉已綁卡頁面**/void goToBindCardPage();/*** 跳轉未綁卡頁面*/void goToNOBindCardPage(); }再來寫個activity
package com.xiayiye.yhsh.fragmentreplace;import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.widget.Toast;public class MainActivity extends AppCompatActivity implements PaymentListener {private FragmentManager mFragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mFragmentManager = getSupportFragmentManager();mFragmentManager.beginTransaction().replace(R.id.fl_common_payment_replace, PaymentFragment.newInstance()).commit();Toolbar commonPaymentTitle = findViewById(R.id.tv_common_payment_title);commonPaymentTitle.setOnClickListener(v -> close());}private void close() {int backStackEntryCount = mFragmentManager.getBackStackEntryCount();if (backStackEntryCount == 0) {finish();return;}mFragmentManager.popBackStackImmediate();}@Overridepublic void goToBindCardPage() {mFragmentManager.beginTransaction().replace(R.id.fl_common_payment_replace, YhshPayFragment.newInstance()).addToBackStack(null).commit();}@Overridepublic void goToNOBindCardPage() {//跳轉到綁定銀行卡頁面Toast.makeText(this,"跳轉添加銀行卡頁面",Toast.LENGTH_LONG).show();mFragmentManager.beginTransaction().replace(R.id.fl_common_payment_replace, PaymentFragment.newInstance()).addToBackStack(null).commit();} }再來寫兩個fragment進行fragment替換跳轉效果跟activity一樣
fragment1
package com.xiayiye.yhsh.fragmentreplace;import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.Toast;import java.util.HashMap;/*** 付款頁面** @author 輕飛揚*/ public class PaymentFragment extends Fragment {Bundle bundle = new Bundle();private Context mContext;private PaymentListener paymentListener;private View convertView;private EditText etTitle;private EditText etBody;private EditText etTotalFee;private EditText etMerchantId;private EditText etPlatformMerchantId;private EditText etUnCreditCode;private EditText memberId;public PaymentFragment() {}/*** 構造函數*/public static PaymentFragment newInstance() {return new PaymentFragment();}@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {convertView = inflater.inflate(R.layout.fragment_payment, container, false);etTitle = convertView.findViewById(R.id.et_title);etBody = convertView.findViewById(R.id.et_body);memberId = convertView.findViewById(R.id.et_member_id);etTotalFee = convertView.findViewById(R.id.et_total_fee);etMerchantId = convertView.findViewById(R.id.et_merchant_id);etPlatformMerchantId = convertView.findViewById(R.id.et_platform_merchant_id);etUnCreditCode = convertView.findViewById(R.id.et_un_credit_code);convertView.findViewById(R.id.bt_Yhsh_pay).setOnClickListener(v -> queryBindCardList());return convertView;}private void queryBindCardList() {String trimEtTitle = etTitle.getText().toString().trim();String trimEtBody = etBody.getText().toString().trim();String trimMemberId = memberId.getText().toString().trim();String trimEtTotalFee = etTotalFee.getText().toString().trim();String trimEtMerchantId = etMerchantId.getText().toString().trim();String trimEtPlatformMerchantId = etPlatformMerchantId.getText().toString().trim();String trimEtUnCreditCode = etUnCreditCode.getText().toString().trim();if (!TextUtils.isEmpty(trimEtTitle) &&!TextUtils.isEmpty(trimEtBody) &&!TextUtils.isEmpty(trimMemberId) &&!TextUtils.isEmpty(trimEtTotalFee) &&!TextUtils.isEmpty(trimEtMerchantId) &&!TextUtils.isEmpty(trimEtPlatformMerchantId) &&!TextUtils.isEmpty(trimEtUnCreditCode)) {bundle.putString("trimEtTitle", trimEtTitle);bundle.putString("trimEtBody", trimEtBody);bundle.putString("trimMemberId", trimMemberId);bundle.putString("trimEtTotalFee", trimEtTotalFee);bundle.putString("trimEtMerchantId", trimEtMerchantId);bundle.putString("trimEtPlatformMerchantId", trimEtPlatformMerchantId);bundle.putString("trimEtUnCreditCode", trimEtUnCreditCode);HashMap<String, String> datas = new HashMap<>();datas.put("charset", "utf-8");datas.put("member_no", trimMemberId);paymentListener.goToBindCardPage();} else {Toast.makeText(getContext(), "賬號不能為空", Toast.LENGTH_LONG).show();}}@Overridepublic void onAttach(Context context) {super.onAttach(context);mContext = context;if (context instanceof PaymentListener) {paymentListener = (PaymentListener) context;} else {throw new RuntimeException(context.toString()+ " must implement PaymentListener");}}}fragment2
package com.xiayiye.yhsh.fragmentreplace;import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;/*** 付款頁面** @author 輕飛揚*/ public class YhshPayFragment extends Fragment {private TextView paymentBankEndNumber;private PaymentListener paymentListener;private Context mContext;public YhshPayFragment() {}/*** 構造函數*/public static YhshPayFragment newInstance() {return new YhshPayFragment();}@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View inflate = View.inflate(getContext(), R.layout.fragment_Yhsh_payment, null);paymentBankEndNumber = inflate.findViewById(R.id.tv_payment_bank_end_number);Button btn_sure_payment = inflate.findViewById(R.id.btn_sure_payment);textInsertImage(paymentBankEndNumber, R.mipmap.bank_card);TextView paymentPhone = inflate.findViewById(R.id.tv_payment_phone);TextView tvPaymentMoney = inflate.findViewById(R.id.tv_payment_money);paymentBankEndNumber.setText("信用卡(尾號5586)");tvPaymentMoney.setText("¥ " + 5);paymentPhone.setText("18888888888");btn_sure_payment.setOnClickListener(v -> goTo());return inflate;}private void goTo() {Toast.makeText(getContext(),"跳轉",Toast.LENGTH_LONG).show();paymentListener.goToNOBindCardPage();}private void textInsertImage(TextView mineSettingTv, int left) {Drawable drawableLeft = ContextCompat.getDrawable(getContext(), left);//第一0是距左邊距離,第二0是距上邊距離,50分別是長寬drawableLeft.setBounds(0, 0, 45, 45);//只放左邊mineSettingTv.setCompoundDrawables(drawableLeft, null, null, null);}@Overridepublic void onAttach(Context context) {super.onAttach(context);mContext = context;if (context instanceof PaymentListener) {paymentListener = (PaymentListener) context;}}}貼出相應的xml文件
activity的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v7.widget.Toolbarandroid:id="@+id/tv_common_payment_title"android:layout_width="match_parent"android:layout_height="50dp"android:background="@android:color/white"app:navigationIcon="@mipmap/mine_bill_back_iv"app:title="測試跳轉"app:titleTextAppearance="@style/Toolbar.TitleText" /><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@drawable/divider_horizontal" /><FrameLayoutandroid:id="@+id/fl_common_payment_replace"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /> </LinearLayout>fragment1的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><!-- 商品名 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_title"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="商品名"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_title"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此添加商品名"android:text="春風十里"android:textSize="15sp" /></LinearLayout><!-- 描述 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_body"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="商品描述"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_body"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此添加商品描述"android:text="不如你"android:textSize="15sp" /></LinearLayout><!-- 金額 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_fee_total"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="應付金額"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_total_fee"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此輸入金額(分)"android:inputType="numberDecimal"android:maxLength="9"android:text="1"android:textSize="15sp" /></LinearLayout><!-- 會員號 --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_member_id"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="會員號"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_member_id"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此輸入會員號"android:text="200100000006109"android:textSize="15sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_merchant_id"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="商戶號"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_merchant_id"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此輸入商戶號"android:text="100000000071531"android:textSize="15sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_platform_merchant_id"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="平臺商戶號"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_platform_merchant_id"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請輸入平臺商戶號"android:text="100000000300000"android:textSize="15sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_un_credit_code"android:layout_width="80dp"android:layout_height="40dp"android:gravity="center_vertical"android:text="店鋪信用碼"android:textColor="#000"android:textSize="15sp" /><EditTextandroid:id="@+id/et_un_credit_code"android:layout_width="240dp"android:layout_height="40dp"android:background="@null"android:gravity="center_vertical"android:hint="請在此輸入店鋪信用碼"android:text="92500101MA5UBY8T40TEST01"android:textSize="15sp" /></LinearLayout><Buttonandroid:id="@+id/bt_Yhsh_pay"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:layout_marginTop="10dp"android:background="@android:color/holo_blue_light"android:text="點擊支付"android:textSize="15sp" /><TextViewandroid:id="@+id/tv_result"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="20dp"android:textColor="#000"android:textSize="13sp" /></LinearLayout><FrameLayoutandroid:id="@+id/payment_replace"android:layout_width="match_parent"android:layout_height="match_parent" /></RelativeLayout>?
fragment2的布局
?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@null"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/white"android:orientation="horizontal"android:padding="13dp"><TextViewandroid:id="@+id/tv_payment_value"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="應付金額"android:textColor="@android:color/black" /><TextViewandroid:id="@+id/tv_payment_money"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="50dp"android:text="¥5.2"android:textColor="@android:color/holo_red_light" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@android:color/darker_gray" /><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:layout_marginTop="13dp"android:background="@android:color/darker_gray" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/white"android:orientation="horizontal"android:padding="13dp"><TextViewandroid:id="@+id/tv_payment_bank_end_number"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:drawablePadding="10dp"android:text="(尾號8842)"android:textColor="@android:color/black" /><TextViewandroid:id="@+id/tv_payment_change_bankcard"android:layout_width="wrap_content"android:layout_height="wrap_content"android:clickable="true"android:focusable="true"android:text="更換"android:textColor="#2978CF" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@android:color/darker_gray" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/white"android:orientation="horizontal"android:padding="13dp"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center|left"android:text="手機號"android:textColor="@android:color/black" /><TextViewandroid:id="@+id/tv_payment_phone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="18888888888"android:textColor="@android:color/black" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="@android:color/darker_gray" /><Buttonandroid:id="@+id/btn_sure_payment"android:layout_width="match_parent"android:layout_height="44dp"android:layout_margin="30dp"android:background="@android:color/holo_blue_light"android:enabled="true"android:text="確認支付"android:textColor="@android:color/white" /> </LinearLayout>?
這里面用到了lambda表達式-Java8新特性
?
如果報錯請在你項目的gradle里面添加下面三行代碼,然后選擇Java8
?
compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8 }?
?
如何選擇Java8請看動圖:
是這么簡單一個activity完事多個fragment進行跳轉
?
如果有看不懂的請下載源碼查看即可:點擊下載源碼
?
總結
以上是生活随笔為你收集整理的Android开发之fragment之replace用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装B神器怎么用 装B神器介绍
- 下一篇: JS根据身份证号码算年龄