標籤:
JsdMainDialog.java
package com.jsd.demo;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/** * * @author jiangshide * */public class JsdMainDialog extends Activity { private Context mContext; private Button mSub; private TextView mResultValue; public static Handler handler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getViewById(); } public void getViewById(){ mContext = this; mSub = (Button) this.findViewById(R.id.sub); mResultValue = (TextView) this.findViewById(R.id.resultValue); mResultValue.setText("沒有通過Handler處理"); mSub.setOnClickListener(listener); } private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.sub: final String flag = "rqbackvalue"; DialogCustomer dc = new DialogCustomer(mContext,flag); dc.show(); handler = new Handler(){ public void handleMessage(Message msg) { String resultFlag = msg.getData().getString("flags"); if(resultFlag.equalsIgnoreCase(flag)){ mResultValue.setText("這是通過Handler處理過後來顯示資料的"); mResultValue.setTextColor(Color.CYAN); mResultValue.setTextSize(30); } }; }; break; default: break; } } };}
DialogCustomer.java:
package com.jsd.demo;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.os.Message;import android.view.View;import android.widget.Button;/** * * @author jiangshide * */public class DialogCustomer extends Dialog { private Context mContext; private Button ok; String flag; public DialogCustomer(Context c,String flag) { super(c); this.mContext = c; this.flag = flag; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog); getViewById(); } public void getViewById(){ ok = (Button) this.findViewById(R.id.dialog_ok); ok.setOnClickListener(listener); } private android.view.View.OnClickListener listener = new android.view.View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_ok: Message msg = new Message();//擷取設定一個資訊儲存點 msg.what=1; msg.getData().putString("flags", flag); JsdMainDialog.handler.sendMessage(msg);//把資料放進LOOPER隊列裡 dismiss(); break; } } };}
dialog.xml:
<?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:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="當返回時把參數傳遞過去並執行判斷後的操作" /> <Button android:id="@+id/dialog_ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="請點擊" /></LinearLayout>
Android 自訂對話方塊使用靜態Handler傳遞參數