Java 使用viewpager类中的一个菜单
我是android新手,所以我制作了一个应用程序,将活动从一个活动切换到另一个活动。但我的一个活动有一个列表,它本身有一些动画,我用菜单选择。现在,在浏览完视图寻呼机后,将显示列表,但不显示此特定列表的菜单,其中包含我列表中的不同动画样式。我使用了listview。我使用了onCreateOptionMenu()和onOptionItemSelected()方法。下面给出了此特定活动的代码Java 使用viewpager类中的一个菜单,java,android,menu,android-viewpager,Java,Android,Menu,Android Viewpager,我是android新手,所以我制作了一个应用程序,将活动从一个活动切换到另一个活动。但我的一个活动有一个列表,它本身有一些动画,我用菜单选择。现在,在浏览完视图寻呼机后,将显示列表,但不显示此特定列表的菜单,其中包含我列表中的不同动画样式。我使用了listview。我使用了onCreateOptionMenu()和onOptionItemSelected()方法。下面给出了此特定活动的代码 public class TabFragmentClass extends Fragment {
public class TabFragmentClass extends Fragment {
DisplayMetrics metrics;
ListView list_view=null;
Animation animation=null;
int mode=R.id.TranslateAnimation1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main,null);
metrics=new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
list_view=(ListView) view.findViewById(R.id.list_view);
list_view.setFadingEdgeLength(0);
ArrayList<String> ar_li=new ArrayList<String>();
for(int i=0;i<100;i++)
{
ar_li.add("item: "+(i+1));
}
MainAdapter mAdapter=new MainAdapter(getActivity(),ar_li,metrics);
list_view.setAdapter(mAdapter);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.activity_main, menu);
menu.add(Menu.NONE,1,0,"TranslateAnimation1");
menu.add(Menu.NONE, 2, 0, "TranslateAnimation2");
menu.add(Menu.NONE, 3, 0, "ScaleAnimation");
menu.add(Menu.NONE, 4, 0, "fade_in");
menu.add(Menu.NONE, 5, 0, "hyper_space_out");
menu.add(Menu.NONE, 6, 0, "wave_scale");
menu.add(Menu.NONE, 7, 0, "push_left_in");
menu.add(Menu.NONE, 8, 0, "push_left_out");
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
mode=item.getItemId();
return super.onOptionsItemSelected(item);
}
class MainAdapter extends ArrayAdapter<String>
{
Context context;
LayoutInflater minflator;
ArrayList<String> ar_string;
DisplayMetrics metrics;
TextView txt_view;
public MainAdapter(Context context, ArrayList<String> ar_string,
DisplayMetrics metrics) {
super(context, 0, ar_string);
this.context=context;
this.minflator=(LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.ar_string=ar_string;
this.metrics=metrics;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final String str=this.ar_string.get(position);
if(convertView==null)
{
convertView=minflator.inflate(android.R.layout.simple_list_item_1,null);
convertView.setBackgroundColor(0xFF202020);
txt_view=(TextView) convertView.findViewById(android.R.id.text1);
txt_view.setTextColor(0xFFFFFFFF);
convertView.setTag(txt_view);
}
else
{
convertView.getTag();
}
txt_view.setText(str);
switch (mode) {
case R.id.TranslateAnimation1:
animation=new TranslateAnimation(metrics.widthPixels/2,0,0,0);
System.out.println("animated value:::::"+animation);
break;
case R.id.TranslateAnimation2:
animation=new TranslateAnimation(0,0,metrics.heightPixels, 0);
break;
case R.id.ScaleAnimation:
animation=new ScaleAnimation((float)1.0,(float)1.0, (float)0, (float)1.0);
break;
case R.id.fade_in:
animation=AnimationUtils.loadAnimation(context, R.anim.anim_fade_in);
break;
case R.id.hyper_space_out:
animation=AnimationUtils.loadAnimation(context, R.anim.hyper_space_out);
break;
case R.id.wave_scale:
animation=AnimationUtils.loadAnimation(context, R.anim.wave_scale);
break;
case R.id.push_left_in:
animation=AnimationUtils.loadAnimation(context, R.anim.push_left_in);
break;
case R.id.push_left_out:
animation=AnimationUtils.loadAnimation(context, R.anim.push_left_out);
break;
default:
break;
}
animation.setDuration(500);
convertView.startAnimation(animation);
animation=null;
return convertView;
}
}
}
公共类选项卡FragmentClass扩展片段{
显示度量;
ListView list_view=null;
动画=空;
int mode=R.id.TranslateAnimation1;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.activity\u main,空);
metrics=新的DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(度量);
list\u view=(ListView)view.findViewById(R.id.list\u view);
列表视图。设置FadingEdgeLength(0);
ArrayList ar_li=新的ArrayList();
对于(int i=0;i您必须在onStart
方法上调用sethastoptionmenu(true)
,或者在片段中的操作栏上显示菜单。类似于:
@Override
public void onStart() {
setHasOptionsMenu(true);
super.onStart();
}
您也可以在onCreateView
或onCreate
方法上调用此函数。我的问题已得到解决,我在日志猫上看到此错误并显示消息,错误为W/Trace():nativeGetEnabledTags中的意外值:0
其中我从这个链接得到了答案:-
我的应用程序在设备上运行良好,没有出现任何此类错误和消息。
谢谢但现在我收到了一条消息,如何重新爱上它:-我/编舞(1181):跳过了113帧!应用程序可能在其主线程上做了太多的工作。I/System.out(1181):menuIt看起来您在该方法中做了大量的工作,这些工作应该在UI线程之外完成。请尝试使用AsyncTask和线程来减少UI线程上的负载。我正在使用此方法,但我太不清楚在doInBackGround()方法中放什么。