想点击一个button dialog中有两个button可以点击,写了一部分 请教主activity button里怎么写
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends FragmentActivity {
private Button button01; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button01.findViewById(R.id.button01);
button01.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

}
});



}



import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
public class Mydialog extends DialogFragment {

private Button add1,add2;
private static final int CAMERA_TAKE = 1;  
private static final int CAMERA_SELECT = 2; 


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
 super.onCreateDialog(savedInstanceState);
View v=getActivity().findViewById(R.layout.activity_dialog);
AlertDialog.Builder al=new AlertDialog.Builder(getActivity());
al.setTitle("请选择");
al.setView(v);

Button add1 = (Button)v.findViewById(R.id.add1);
Button add2 = (Button)v.findViewById(R.id.add2);
add1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
 getPhoto();
}
});
add2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, CAMERA_SELECT);
}
});
return al.create();

}
public void getPhoto() {  
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 调用系统相机  
        startActivityForResult(intent, CAMERA_TAKE);  

}



}dialogandroid

解决方案 »

  1.   

    帮你改了,代码在下面,你看一下注释的几个地方:
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;public class MainActivity extends FragmentActivity { private Button button01; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); //button01.findViewById(R.id.button01); 这句你写错了,应该是下面这样写.
    button01 = (Button)findViewById(R.id.button01);
    button01.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    (new Mydialog()).show(getSupportFragmentManager(), "dialog");//Mydialog这么用
    }
    }); }
    }import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.support.v4.app.DialogFragment;
    import android.support.v4.app.FragmentManager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.Button;public class Mydialog extends DialogFragment { private Button add1, add2;
    private static final int CAMERA_TAKE = 1;
    private static final int CAMERA_SELECT = 2; @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    return super.onCreateView(inflater, container, savedInstanceState);
    } @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    super.onCreateDialog(savedInstanceState);
    // View v = getActivity().findViewById(R.layout.activity_dialog);  这里要用下面这句才行,不然后面获取不到add1和add2两个button
    View v = LayoutInflater.from(getActivity()).inflate(R.layout.activity_dialog,null);
    AlertDialog.Builder al = new AlertDialog.Builder(getActivity());
    al.setTitle("请选择");
    al.setView(v); add1 = (Button) v.findViewById(R.id.add1);//这句前面不要再加Button了,因为你已经定义add1了.
    add2 = (Button) v.findViewById(R.id.add2);//这句前面不要再加Button了,因为你已经定义add2了.
    add1.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    getPhoto();
    dismiss();//进入相机界面后,按back键返回,如果不想停留在dialog界面就加上这句,如果想停留在dialog就把这句去掉
    }
    });
    add2.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent, CAMERA_SELECT);
    dismiss();//进入选择照片界面后,按back键返回,如果不想停留在dialog界面就加上这句,如果想停留在dialog就把这句去掉
    }
    });
    return al.create(); } public void getPhoto() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 调用系统相机
    startActivityForResult(intent, CAMERA_TAKE); } @Override
    public void show(FragmentManager manager, String tag) {
    super.show(manager, tag);
    }}