对自定义Dialog上的事件做出反应 - android

时间:2014-04-01 12:11:58

标签: android xml android-layout events android-intent

这是acceuilActivity:

public class AcceuilActivity extends FragmentActivity {

private GoogleMap mMap;
Button handle,b1,b2,b3,b4;
RadioGroup choixSignalGroup;
RadioButton ChoixSignalButton;
Button signaler,annuler;
SlidingDrawer slidingDrawer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_acceuil);

    SupportMapFragment mapFrag = (SupportMapFragment) this.getSupportFragmentManager().findFragmentById(R.id.map);

    mMap = mapFrag.getMap();    

    handle = (Button) this.findViewById(R.id.handle);
    slidingDrawer = (SlidingDrawer) findViewById(R.id.slidingDrawer1);

    b1 = (Button) findViewById(R.id.b1);
    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Dialog d = new Dialog(AcceuilActivity.this);
            d.setContentView(R.layout.dialog_signal);
            d.setTitle("Signalement");
            choixSignalGroup = (RadioGroup) findViewById(R.id.radioGroup1);
            signaler = (Button) findViewById(R.id);
            d.show();
        }
    });

    b2 = (Button) this.findViewById(R.id.b2);
    b3 = (Button) this.findViewById(R.id.b3);
    b4 = (Button) this.findViewById(R.id.b4);   
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.acceuil, menu);
    return super.onCreateOptionsMenu(menu);
}    
}

这是dialog_signal:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >
    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Encombrement" />
        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Accident" />
        <RadioButton
            android:id="@+id/radio3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Danger" />
        <RadioButton
            android:id="@+id/radio4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Barrage" />
        <RadioButton
            android:id="@+id/radio5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Traveaux" />
    </RadioGroup>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <Button
            android:id="@+id/signaler"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Signaler" />
        <Button
            android:id="@+id/annuler"
            android:layout_width="110dp"
            android:layout_height="wrap_content"
            android:text="Annuler" />
    </LinearLayout>
</LinearLayout>

当我从自定义对话框布局(dialog_signal)调用无线电组时,它工作但当我尝试从同一布局调用按钮(信号器)时它不起作用!请帮忙

1 个答案:

答案 0 :(得分:0)

创建如下对话框:

public void createDialog() {
    Dialog dialog = new Dialog(YourActivity.this);

    dialog.setContentView(R.layout.custom_dialog_layout);
    dialog.setTitle("Select");
    dialog.setCancelable(true);

    final Spinner spn = (Spinner) dialog.findViewById(R.id.spinner1);

    dialog.show();
}

假设自定义xml布局中有一个微调器。使用dialog.findViewById(),从布局中查找id。您可以在该代码下创建侦听器方法。

就其中涉及哪些活动而言,你必须确定这一点。无论您想从何处启动对话框,只需调用该方法即可。但是,请记住在活动中创建此方法,您打算从该活动启动对话框。

以与微调器相同的方式使用RadioGroup,您就可以开始滚动了。