Java 对话框中的Viewpager不工作
我使用下面的代码来显示一个对话框,其中包含ViewPagerJava 对话框中的Viewpager不工作,java,android,eclipse,android-fragments,android-studio,Java,Android,Eclipse,Android Fragments,Android Studio,我使用下面的代码来显示一个对话框,其中包含ViewPager new Handler().postDelayed(new Runnable() { @Override public void run() { TutorialAlerts alert = new TutorialAlerts(MainActivity.this, android.R.style.Theme_Tr
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
TutorialAlerts alert = new TutorialAlerts(MainActivity.this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen, TutorialAlerts.TUTORIAL_ALERT_INITIAL);
alert.show();
}
}, 3000);
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;
import com.iyedah.weping.R;
import com.iyedah.weping.fragments.TutorialFragment;
import com.viewpagerindicator.CirclePageIndicator;
import java.util.ArrayList;
public class TutorialAlerts extends Dialog
{
public ArrayList<TutorialFragment> fragments = new ArrayList<TutorialFragment>();
private int type = TUTORIAL_ALERT_CHAT;
public static final int TUTORIAL_ALERT_CHAT = 0;
public static final int TUTORIAL_ALERT_MAP = 1;
public static final int TUTORIAL_ALERT_INITIAL = 2;
public static final int TUTORIAL_ALERT_MESSAGE = 3;
private CirclePageIndicator cirleIndicator;
private ViewPager pager;
private FragmentActivity mContext;
private TextView nextBtn;
private TextView title;
private PagerAdapter adapter;
public TutorialAlerts(FragmentActivity context, int theme, int type)
{
super(context, theme);
this.mContext = context;
this.type = type;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_tutorial);
nextBtn = (TextView) this.findViewById(R.id.nextBtn);
title = (TextView) findViewById(R.id.title);
pager = (ViewPager) findViewById(R.id.pager);
pager.setOnPageChangeListener(mPageChangeListener);
cirleIndicator = (CirclePageIndicator) findViewById(R.id.cirleIndicator);
if (type == TUTORIAL_ALERT_INITIAL)
{
title.setText("Getting started");
TutorialFragment page1 = new TutorialFragment();
Bundle bundle = new Bundle();
bundle.putInt("pageNumber", 1);
page1.setArguments(bundle);
fragments.add(page1);
TutorialFragment page2 = new TutorialFragment();
bundle = new Bundle();
bundle.putInt("pageNumber", 2);
page2.setArguments(bundle);
fragments.add(page2);
TutorialFragment page3 = new TutorialFragment();
bundle = new Bundle();
bundle.putInt("pageNumber", 3);
page3.setArguments(bundle);
fragments.add(page3);
}
adapter = new MyPagerAdapter(mContext.getSupportFragmentManager());
}
@Override
public void show()
{
super.show();
pager.setAdapter(adapter);
cirleIndicator.setViewPager(pager);
pager.setCurrentItem(0, true);
}
/************************************************************************
*
*
**********************************************************************/
public class MyPagerAdapter extends FragmentPagerAdapter
{
public MyPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public CharSequence getPageTitle(int position)
{
return "";
}
@Override
public int getCount()
{
return fragments.size();
}
@Override
public Fragment getItem(int position)
{
return fragments.get(position);
}
}
private ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(final int position)
{
fragments.get(position).setupInitialTutorial(position + 1);
if(position == fragments.size())
{
nextBtn.setText("Done");
nextBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
dismiss();
}
});
}
else
{
nextBtn.setText("Next");
nextBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
pager.setCurrentItem(position + 1, true);
}
});
}
}
@Override
public void onPageScrolled(int position, float arg1, int arg2)
{
}
@Override
public void onPageScrollStateChanged(int arg0)
{
}
};
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#C8000000"
>
<TextView
android:layout_marginTop="20dp"
android:gravity="center"
android:textStyle="bold"
android:textSize="23sp"
android:textColor="@color/green"
android:text="@string/use_app"
android:layout_width="match_parent"
android:layout_height="58dp"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:id="@+id/title"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_above="@+id/nextBtn"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<com.viewpagerindicator.CirclePageIndicator
android:layout_centerHorizontal="true"
android:id="@+id/cirleIndicator"
android:layout_marginBottom="10dp"
android:layout_above="@+id/nextBtn"
android:layout_height="40dp"
android:layout_width="60dp" />
<TextView
android:gravity="center"
android:textStyle="bold"
android:textSize="20sp"
android:layout_alignParentBottom="true"
android:background="@color/mild_black"
android:id="@+id/nextBtn"
android:textColor="@color/green"
android:text="@string/next"
android:layout_width="match_parent"
android:layout_height="58dp"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
/>
</RelativeLayout>
new Handler().postDelayed(new Runnable())
{
@凌驾
公开募捐
{
TutorialAlerts alert=新的TutorialAlerts(MainActivity.this、android.R.style.Theme\u半透明\u NoTitleBar\u全屏、TutorialAlerts.TUTORIAL\u alert\u首字母);
alert.show();
}
}, 3000);
导入android.app.Dialog;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.PagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.view.view;
导入android.widget.TextView;
进口com.iyedah.weping.R;
导入com.iyedah.weping.fragments.TutorialFragment;
导入com.viewpagerindicator.CirclePageIndicator;
导入java.util.ArrayList;
“公共类教程扩展”对话框
{
public ArrayList fragments=new ArrayList();
private int type=教程\警报\聊天;
公共静态最终int教程\u警报\u聊天=0;
公共静态最终int教程\u警报\u地图=1;
公共静态最终整数教程\警报\初始值=2;
公共静态最终int教程\u警报\u消息=3;
专用环路指示器;
私人寻呼机;
私有碎片活动mContext;
私有文本视图nextBtn;
私有文本视图标题;
专用寻呼器适配器;
公共教程列表(片段活动上下文、int主题、int类型)
{
超级(上下文、主题);
this.mContext=上下文;
this.type=type;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_教程);
nextBtn=(TextView)this.findViewById(R.id.nextBtn);
title=(TextView)findViewById(R.id.title);
pager=(ViewPager)findViewById(R.id.pager);
setOnPageChangeListener(mPageChangeListener);
cirleIndicator=(CirclePageIndicator)findViewById(R.id.cirleIndicator);
如果(类型==教程\u警报\u初始值)
{
title.setText(“入门”);
TutorialFragment page1=新建TutorialFragment();
Bundle=新Bundle();
bundle.putInt(“页码”,1);
第1页设置参数(捆绑);
片段。添加(第1页);
TutorialFragment page2=新建TutorialFragment();
bundle=新bundle();
bundle.putInt(“页码”,2);
第2页设置参数(捆绑);
片段。添加(第2页);
TutorialFragment page3=新建TutorialFragment();
bundle=新bundle();
bundle.putInt(“页码”,3);
第3页设置参数(捆绑);
片段。添加(第3页);
}
适配器=新的MyPagerAdapter(mContext.getSupportFragmentManager());
}
@凌驾
公开展览(
{
super.show();
寻呼机设置适配器(适配器);
cirleIndicator.setViewPager(寻呼机);
pager.setCurrentItem(0,真);
}
/************************************************************************
*
*
**********************************************************************/
公共类MyPagerAdapter扩展了FragmentPagerAdapter
{
公共MyPagerAdapter(碎片管理器fm)
{
超级(fm);
}
@凌驾
公共字符序列getPageTitle(int位置)
{
返回“”;
}
@凌驾
public int getCount()
{
返回fragments.size();
}
@凌驾
公共片段getItem(int位置)
{
返回碎片。获取(位置);
}
}
私有ViewPager.OnPageChangeListener mPageChangeListener=新建ViewPager.OnPageChangeListener()
{
@凌驾
已选择页面上的公共无效(最终整型位置)
{
fragments.get(位置).setupInitialTutorial(位置+1);
if(position==fragments.size())
{
下一步设置下一步(“完成”);
nextBtn.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
解雇();
}
});
}
其他的
{
nextBtn.setText(“下一步”);
nextBtn.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
pager.setCurrentItem(位置+1,真);
}
});
}
}
@凌驾
已滚动页面上的公共无效(整数位置、浮点arg1、整数arg2)
{
}
@凌驾
公共无效onPageScrollStateChanged(int arg0)
{
}
};
}
对话框显示ok,但viewPager似乎不可见,没有显示任何内容。我扩展了dialogfragment类并创建了新的customdialog
public class CustomDailog extends DialogFragment {
private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.addon_dialog, container);
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
getDialog().setCancelable(true);
getDialog().getWindow().setGravity(Gravity.TOP);
return view;
}
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
DisplayMetrics metrics = getResources().getDisplayMetrics();
int screenWidth = (int) (metrics.widthPixels * 0.95);
int screenHeight = (int) (metrics.heightPixels * 0.95);
getDialog().getWindow().setLayout(screenWidth, screenHeight);
android.support.v4.view.ViewPager addonsviewpager = (android.support.v4.view.ViewPager) view.findViewById(R.id.addonsviewpager);
}
}
addon_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/addonsviewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
</android.support.v4.view.ViewPager>
</RelativeLayout>
你们能发布dialog_tutorial.xml吗?请浏览一下视频,以便在dialog中查看寻呼机。这将有帮助。请通过视频查看对话框中的寻呼机。这将有助于在对话中创建视图寻呼机。
CustomDailog customDailog=new CustomDailog ();
customDailog.show(getFragmentManager(),"addons_fragment");