自定义对话框使用静态Handler传递参数
直接貼代碼:
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>
?
原文地址:http://blog.csdn.net/jiangshide/article/details/6434597
轉載于:https://www.cnblogs.com/firecode/archive/2012/09/04/2670837.html
總結
以上是生活随笔為你收集整理的自定义对话框使用静态Handler传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win8 - 学习资源
- 下一篇: ATL 核心COM继承类之IDispat