Android 在对话框中设置类

Android 在对话框中设置类,android,android-layout,Android,Android Layout,可以在Android中的对话框中打开类吗 例如: Dialog settingsDialog = new Dialog(this); settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); settingsDialog.setContentView(getLayoutInflater(). inflate(R.lay

可以在Android中的对话框中打开类吗

例如:

Dialog settingsDialog = new Dialog(this);
        settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        settingsDialog.setContentView(getLayoutInflater().
                                   inflate(R.layout.image_pager, null));
        settingsDialog.show();
正在打开一个图像。如何在加载类而不是xml布局时执行相同的操作

其他信息:
这是我的ImagePager课程

public class ImagePopUp extends BaseActivity implements OnClickListener {

    private ViewPager pager;
    Button boutton_retour;
    public static String img;


    private DisplayImageOptions options;
    String url,image,title;
    ArrayList<Post> PostDetails = new ArrayList<Post>();

    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_diaporama_pager);

        showViewHolderExtra();

    }


    private class ImagePagerAdapter extends PagerAdapter {

        private String[] images;
        private LayoutInflater inflater;

        @Override
        public void destroyItem(View container, int position, Object object) {
            ((ViewPager) container).removeView((View) object);
        }

        ImagePagerAdapter(String[] images) {
            this.images = images;
            inflater = getLayoutInflater();
        }

        @Override
        public void finishUpdate(View container) {
        }

        @Override
        public int getCount() {
            return images.length;
        }


        @Override
        public Object instantiateItem(View view, int position) {

            Dialog settingsDialog = new Dialog(ImagePopUp.this);
            settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            settingsDialog.setContentView(getLayoutInflater().inflate(R.layout.image_layout, null));
            settingsDialog.show();

            final View imageLayout = inflater.inflate(R.layout.item_pager_image, null);
            final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.im_pager);
            final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loadinprogress);

            imageLoader.displayImage(images[position], imageView, options, new ImageLoadingListener() {

                public void onLoadingStarted() {
                    spinner.setVisibility(View.VISIBLE);

                }


                public void onLoadingFailed(FailReason failReason) {
                    String message = null;
                    switch (failReason) {
                        case IO_ERROR:
                            message = "Input/Output error";
                            break;
                        case OUT_OF_MEMORY:
                            message = "Out Of Memory error";
                            break;
                        case UNKNOWN:
                            message = "Unknown error";
                            break;
                    }

                    Toast.makeText(ImagePopUp.this, message, Toast.LENGTH_SHORT).show();

                    spinner.setVisibility(View.GONE);
                    imageView.setImageResource(android.R.drawable.ic_delete);
                }

                public void onLoadingComplete(Bitmap loadedImage) {
                    spinner.setVisibility(View.GONE);
                    Animation anim = AnimationUtils.loadAnimation(ImagePopUp.this, R.anim.fade_in);
                    imageView.setAnimation(anim);
                    anim.start();
                }

                public void onLoadingCancelled() {
                    // Do nothing
                }
            });

            ((ViewPager) view).addView(imageLayout, 0);
            return imageLayout;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }

        @Override
        public void restoreState(Parcelable state, ClassLoader loader) {
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

        @Override
        public void startUpdate(View container) {
        }

    }

    public void showViewHolderExtra(){

        String[] seperated = img.split(";");

        Bundle bundle = getIntent().getExtras();
        int pagerPosition = bundle.getInt("POSITION", 0);

        System.out.println("image: "+ pagerPosition);

        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ImagePagerAdapter(seperated));
        pager.setCurrentItem(pagerPosition);

        options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.drawable.ic_launcher)
            .cacheOnDisc()
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .build();
    }




    public void onClick(View v) {
        // TODO Auto-generated method stub

        switch(v.getId()){

        case R.id.boutton_retour:
            finish();
        break;

        }
    }
}
公共类ImagePopUp扩展BaseActivity实现OnClickListener{
私人寻呼机;
纽扣花束;
公共静态字符串img;
私有显示图像选项;
字符串url、图像、标题;
ArrayList PostDetails=新建ArrayList();
创建时的公共void(Bundle savedInstanceState){
requestWindowFeature(窗口。功能\u无\u标题);
super.onCreate(savedInstanceState);
setContentView(R.layout.main_diporama_pager);
showViewHolderExtra();
}
私有类ImagePagerAdapter扩展了PagerAdapter{
私有字符串[]图像;
私人充气机;
@凌驾
公共项(视图容器、int位置、对象){
((ViewPager)容器)。移除视图((视图)对象);
}
ImagePagerAdapter(字符串[]图像){
这个。图像=图像;
充气机=充气机();
}
@凌驾
公共void finishUpdate(视图容器){
}
@凌驾
public int getCount(){
返回图像长度;
}
@凌驾
公共对象实例化项(视图,int位置){
对话框设置Dialog=新建对话框(ImagePopUp.this);
设置Dialog.getWindow().requestFeature(Window.FEATURE\u NO\u TITLE);
settingsDialog.setContentView(getLayoutInflater().inflate(R.layout.image_layout,null));
设置Dialog.show();
最终视图图像布局=充气机。充气(R.layout.item\u pager\u图像,空);
final ImageView ImageView=(ImageView)imageLayout.findViewById(R.id.im_pager);
最终ProgressBar微调器=(ProgressBar)imageLayout.findViewById(R.id.loadinprogress);
displayImage(图像[位置]、图像视图、选项、新图像加载侦听器(){
public void onLoadingStarted(){
spinner.setVisibility(View.VISIBLE);
}
public void onload失败(失败原因失败原因){
字符串消息=null;
开关(故障原因){
案例IO_错误:
message=“输入/输出错误”;
打破
大小写输出\u\u内存:
message=“内存不足错误”;
打破
案件未知:
message=“未知错误”;
打破
}
Toast.makeText(ImagePopUp.this,message,Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
setImageResource(android.R.drawable.ic_delete);
}
公共void onLoadingComplete(位图加载图像){
spinner.setVisibility(View.GONE);
动画动画=AnimationUtils.loadAnimation(ImagePopUp.this,R.anim.fade_in);
设置动画(动画);
anim.start();
}
public void onload取消(){
//无所事事
}
});
((ViewPager)视图).addView(imageLayout,0);
返回图像布局;
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图.equals(对象);
}
@凌驾
公共无效恢复状态(可包裹状态,类装入器){
}
@凌驾
公共包裹存储状态(){
返回null;
}
@凌驾
公共无效启动日期(查看容器){
}
}
公开作废showViewHolderExtra(){
字符串[]separated=img.split(“;”);
Bundle Bundle=getIntent().getExtras();
int pagerPosition=bundle.getInt(“位置”,0);
System.out.println(“图像:+pagerPosition”);
pager=(ViewPager)findViewById(R.id.pager);
寻呼机设置适配器(新图像寻呼机(单独));
pager.setCurrentItem(页面位置);
选项=新建DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.ic_发射器)
.cacheOnDisc()
.imageScaleType(imageScaleType.IN\u示例\u INT)
.build();
}
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.boutton_retour:
完成();
打破
}
}
}

我希望在单击时将其显示在对话框中。

您希望在对话框中加载整个活动。有两种方法。如果活动只是一个ViewPager,您可以将对话框的内容设置为该ViewPager:

    Dialog settingsDialog = new Dialog(this);
    settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    ViewPager mViewPager = new ViewPager(this);
    ImagePagerAdapter adapter = new ImagePagerAdapter(images);
    mViewPager.setAdapter(adapter);
    settingsDialog.setContentView(mViewPager);
    settingsDialog.show();
您甚至可以像平常一样加载整个活动,但只是让它看起来像一个对话框,带有对话框主题或其他


如果您知道
.setContentView
可以获取资源id视图,那么使用什么方法应该是显而易见的。这就像是
onCreate

最简单的方法就是在AndroidManifest中设置:

 <activity
            android:name=".ImagePopUp"
            android:theme="@android:style/Theme.Dialog" >
        </activity>
然后,像往常一样打开该类,单击:

Intent intent = new Intent(YourActualClass.this, ImagePopUp.class);
startActivity(intent);

可以通过在布局xml中使用自定义视图来实现这一点

 settingsDialog.setContentView(getLayoutInflater().inflate(R.layout.image_pager, null));
layout/imagepaper.xml

<com.your.package.CustomLinearLayout
   xmlns: ... 
   android:layout_width="" ... etc
   />

另一种方法是使用“

如图所示:

您的类扩展了DialogFragment:

 public class OneOptionDialogFragment<T> extends DialogFragment {

       // do stuff

 }
public类OneOptionDialogFragment扩展了DialogFragment{
//做事
}
和显示对话框(取自上述url):

OneOptionDialogFra
public class CustomLinearLayout extends LinearLayout {

     // Overridden constructors

     // onFinishInflate() etc

}
 public class OneOptionDialogFragment<T> extends DialogFragment {

       // do stuff

 }
 OneOptionDialogFragment<UserDetails> dialogFragment = OneOptionDialogFragment.newInstance(title, message, buttonText);
    dialogFragment.show(getSupportFragmentManager(), "DeleteFragTag");