fragment如何获取父activity里的控件并隐藏

如题,现在activity里放了个viewpager,pager里放了个fragment,fragment里放了个listview。
现在我想让listview滑动的时候,activity里的某个控件隐藏。求大神给思路

getactivity().findview获取控件不报错,但就是隐藏不了。经过测试,这种方式控制不了Activity里的控件。

5个回答

当你listview滑动的时候,发handler隐藏activity的控件

kong92917
七号大蒜 虽然使用回调处理可能会好一点 ,handler更易懂上手
4 年多之前 回复

应该是可以的。最好把你的代码贴一下。另外,既然是隐藏activity中的内容,通过回调的方式处理比较好些,回调到activity中对控件进行隐藏

隐藏Activity中的内容,根据实际情况进行判断,然后调用回调方法,这个方式使用的比较多的.在Activity实现回调,可以再UI线程中,进行隐藏操作

简单,这个通过回调函数可以轻松实现。
在Fragment中需要操控Activity的地方设置一个回调函数,Activity中实现这个回调函数,回调函数中就是写些你上面说的那些

假如 父Activity的类名叫 ParentActivity,有一个test()方法

在Fragment中调用其实很简单,代码如下:

ParentActivity parentActivity = (ParentActivity ) getActivity();
parentActivity.test();

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android 怎么在Activity里面获取当前Fragment的控件
Android 怎么在Activity里面获取当前Fragment的控件
activity点击跳转并传参数到fragment如何修改fragment中的控件为传递过来的参数
我自己写了一个方法来传递参数的,目的是要修改控件的值 activity 代码部分 dia=new DiagFragment(); nBtb=(Button)findViewById(R.id.bt); nBtb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dia.show(MainActivity.this.getSupportFragmentManager(), null); } }); timer.schedule(task, 1000, 5000); } TimerTask task = new TimerTask() { public void run() { if (dia!=null){ ((DiagFragment) dia).setData2(String.valueOf((Math.random() * 10))); } } }; Dialogfragment 部分 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.list_dialog,null); mContext=getActivity(); initView(view); return view; } public void initView(View view){ tx1=(TextView)view.findViewById(R.id.tv_1); tx2=(TextView)view.findViewById(R.id.txv_2); } public void setData2(String string) { str2=string; Log.w(TAG, "setData2: "+string ); tx2.setText(string); } 我能打印到定时器传过来的数据 但只要我加上tx2.setText(string)就报错
android fragment内部控件跳转fragment 如何替换标题
遇到一个问题 比如 mainActivity 里面有3个fragment,其中一个个人中心fragment里面有多个控件,点击其中一个控件跳转到消息的fragment,但是标题还是显示个人中心 ,要怎么切换标题?代码怎么操作 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); //声明使用自定义标题 setContentView(R.layout.activity_main); // 注意顺序 //设置窗体样式 getWindow().setFeatureInt( Window.FEATURE_CUSTOM_TITLE, //设置此样式为自定义样式 R.layout.title //设置对应的布局 );//自定义布局赋值 这个是mainActivity 里面可以这样写 但是在个人中心 fragment就不能这样 有什么方法可以替换标题呢 个人中心可以切换标题 titleName.setText(getResources().getString(R.string.person_home)); btnBack.setVisibility(View.VISIBLE); btnBack.setText("注销"); 但是后面在 个人中心fragment里面就不懂怎么操作了
kotlin在fragment中不能像activity中直接通过id调用控件了,有什么办法吗
kotlin中 在fragment中不能像activity中直接通过id调用控件了,有什么办法吗
Fragment隐藏时怎么找到控件
在Fragment的onCreateView()方法中初始化控件, 在这个Fragment隐藏的状态下无法找到控件 private List<Order> list = new ArrayList<Order>(); private RecyclerView recyclerView; private MyAdapter myAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragmentitem,null); Log.e("onCreateView","onCreateView"); recyclerView = (RecyclerView) view.findViewById(R.id.recy); SharedPreferences sp = getContext().getSharedPreferences("or", Activity.MODE_PRIVATE); String str = sp.getString("home",""); if (str != "") { PetHome home = GsonManager.getGson(str, PetHome.class); for (int i = 0; i < home.getOrder().size(); i++) { if (home.getOrder().get(i).getOrders().getOrType() == 3){ Order o = null; o = home.getOrder().get(i); list.add(o); } } Log.e("showcan",list.size()+"--"); LinearLayoutManager manager = new LinearLayoutManager(getActivity()); manager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(manager); myAdapter = new MyAdapter(list); recyclerView.setAdapter(myAdapter); }else { Toast.makeText(getContext(), "网络请求失败", Toast.LENGTH_SHORT).show(); } return view; } 上面是onCreateView()方法 @Override public void change(List<Order> oList , int index ) { Log.e("cancel-1","cancel"+list.size()); list = new ArrayList<Order>(); if (oList.size() > 0){ for (int i = 0; i < oList.size(); i++){ if (oList.get(i).getOrders().getOrType() == 3){ Order o = null; o = oList.get(i); list.add(o); } } } Log.e("cancel-2","cancel"+list.size()); /* LinearLayoutManager manager = new LinearLayoutManager(getActivity()); manager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(manager);*/ myAdapter.notifyDataSetChanged(); } 上面这是自己写的接口 我在另一个Fragment中调用了这个接口,myAdapter就会报控制针。
怎么在fragment中调用适配器中的某个控件
在ListView中,我点击他的每个Item后,某一个控件改变颜色,请问我怎么在fragment中或activity中调用适配器中的某一个控件? 求大神帮助!!
报保存状态出错,fragment已经清除了下标-1
使用fragmentactivity出现的如过mIndex《0则会报这个错误,看源码,这个index是保存fragment视图状态的。这个错误出现在用fragmentactivity实现tab,然后在一个fragment开启另一个activity,当多次操作后,点击另一activity里的控件,程序会崩溃
Android 两个activity之间跳转不刷新怎么实现
两个activity中布局类似,都有两个listview,listview可以点击,我现在设置的是两个一样的xml,两个类似的activity 用intent进行跳转,但这样切换会重新刷新,如何实现不刷新切换。请大神细讲 !!! 之前想用Fragment的方法 来隐藏添加控件 但是由于自己不太懂 一个类既要继承Fragment又要继承activity 不能解决 所以被搁置了 并且这个方法需要改动很多 太麻烦 我看到有些帖子有说能用按钮实现控件隐藏显示的 求教!
安卓求助,activity中fragment替换问题
新手一枚,听说这里大神很多,特来求助 主界面activity里底部是包含4个radiobutton的导航栏,4个button对应四个fragment。 现在要做的是,第四个button对应是登录界面fragment,登录后替换录界面fragment显示个人信息界面的fragment。 我代码写出来后,替换后第一个button和第四个button对应的fragment都变成了 个人信息界面的button,而且从其他跳转到主界面的activity时,第四个button对应的fragment又变成了登录界面fragment了。不知道我描述清楚不,请大神帮忙看下代码,问题出在哪里了。 主界面activity代码如下。 public class MainActivity extends FragmentActivity { private RadioButton rb_index,rb_pro,rb_find,rb_me; private FindFragment findFragment; private LoginFragment loginFragment; private ProjectFragment projectFragment; private IndexFragment indexFragment; private MycenterFragment mycenterFragment; public FrameLayout fragment_container; private long exitTime = 0; private FragmentManager fManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fManager = getSupportFragmentManager(); getView(); setView(); // 设置rb_index默认选中 rb_index.performClick(); } //获取控件 private void getView() { rb_index= (RadioButton) findViewById(R.id.rb_index); rb_pro= (RadioButton) findViewById(R.id.rb_pro); rb_find = (RadioButton) findViewById(R.id.rb_find); rb_me= (RadioButton) findViewById(R.id.rb_me); fragment_container= (FrameLayout) findViewById(R.id.fragment_container); } // 设置监听 private void setView() { MyListener myListener =new MyListener(); rb_index.setOnClickListener(myListener); rb_pro.setOnClickListener(myListener); rb_find.setOnClickListener(myListener); rb_me.setOnClickListener(myListener); } //重置所有button的选中状态 private void setSelected(){ rb_index.setSelected(false); rb_pro.setSelected(false); rb_find.setSelected(false); rb_me.setSelected(false); } //隐藏所有Fragment private void hideAllFragment(FragmentTransaction fragmentTransaction){ if(findFragment != null){fragmentTransaction.hide(findFragment);} if(loginFragment != null){fragmentTransaction.hide(loginFragment);} if(projectFragment != null){fragmentTransaction.hide(projectFragment);} if(indexFragment != null){fragmentTransaction.hide(indexFragment);} if(mycenterFragment != null){fragmentTransaction.hide(mycenterFragment);} } class MyListener implements OnClickListener { @Override public void onClick(View v) { FragmentTransaction fTransaction = fManager.beginTransaction(); hideAllFragment(fTransaction); switch (v.getId()) { case R.id.rb_index: setSelected(); rb_index.setSelected(true); if(indexFragment == null){ indexFragment = new IndexFragment(); fTransaction.add(R.id.fragment_container,indexFragment); }else{ fTransaction.show(indexFragment); } break; case R.id.rb_pro: setSelected(); rb_pro.setSelected(true); if(projectFragment == null){ projectFragment = new ProjectFragment(); fTransaction.add(R.id.fragment_container,projectFragment); }else{ fTransaction.show(projectFragment); } break; case R.id.rb_find: setSelected(); rb_find.setSelected(true); if(findFragment == null){ findFragment = new FindFragment(); fTransaction.add(R.id.fragment_container,findFragment); }else{ fTransaction.show(findFragment); } break; case R.id.rb_me: setSelected(); if(loginFragment == null){ loginFragment = new LoginFragment(); fTransaction.add(R.id.fragment_container,loginFragment); }else{ fTransaction.show(loginFragment); } break; } fTransaction.commit(); } } 登录界面fragment中替换fragment部分的代码如下 //个人信息fragment MycenterFragment mycenterFragment =new MycenterFragment(); //登录界面的fragment LoginFragment loginFragment=new LoginFragment(); // 开启事务 FragmentTransaction transaction =getFragmentManager().beginTransaction(); // 设置动画效果 transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); transaction.replace(R.id.fragment_container, mycenterFragment); transaction.hide(loginFragment); transaction.show(mycenterFragment); transaction.addToBackStack(null); transaction.commit(); 代码风格不好,如果大神能指点下,不胜感激!!
求大神解答从Fragment中的按钮跳转至另一个页面的问题
小弟学习安卓的时候遇到了问题,如下。 我显示编辑了一个Fragment的类,代码如下: import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; public class FragmentRecord extends Fragment implements View.OnClickListener{ private ListView listView; private String[] mStrings = {"运动1", "运动2", "运动3"}; private ArrayAdapter<String>array_adapter; private ImageView btn_add; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView =inflater.inflate(R.layout.fragment_record, container, false); listView = (ListView)rootView.findViewById(R.id.listView_data);//获取自己视图里的控件引用 btn_add=(ImageView) rootView.findViewById(R.id.btn_add); //return inflater.inflate(R.layout.fragment_record,container,false); return rootView; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); array_adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mStrings); listView.setAdapter(array_adapter); btn_add=(ImageView) getActivity().findViewById(R.id.btn_add); btn_add.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent =new Intent(getActivity(),FragmentTarget.class); FragmentRecord.this.startActivity(intent); } } 我设置了按钮的点击事件,可是为什么一点按钮就报错,错误如下:、 ![图片说明](https://img-ask.csdn.net/upload/201604/16/1460792008_617819.jpg) 然后我想要跳转的页面是这样的一个: import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class FragmentTarget extends Fragment { @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_target, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } } 不太清楚如何改可以改了这个FragmentTartget强制转换成activity的错误,求大神解答,十分感谢!
listview如何添加多个
在一个activity布局文件中如何添加多个listview控件,或是如何通过fragment实现在一个activity中添加多个listview
fragment的滑动删除 反应很顿
我在listview的getview里面写了滑动删除,可是反应很顿,老是滑不出来, 体验效果不好,网上看到的都是在activity中用的,我试了,当切换fragment的时候,还是存在的 大家有好的方法吗?/??谢谢了 // 为每一个view项设置触控监听 convertView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { final ListViewHolder holder = (ListViewHolder) v.getTag(); // 当按下时处理 if (event.getAction() == MotionEvent.ACTION_DOWN) { // //设置背景为选中状态 // v.setBackgroundResource(R.drawable.mm_listitem_pressed); // 获取按下时的x轴坐标 x = event.getX(); // Toast.makeText(mContext, x+"", 1).show(); // 判断之前是否出现了删除按钮如果存在就隐藏 if (curDel_btn != null) { // if(curDel_btn.getVisibility() == View.VISIBLE){ curDel_btn.setVisibility(View.GONE); return true; // } } } else if (event.getAction() == MotionEvent.ACTION_UP) {// 松开处理 // 设置背景为未选中正常状态 // v.setBackgroundResource(R.drawable.mm_listitem_simple); // 获取松开时的x坐标 ux = event.getX(); // 怎么没用松开的坐标呢 // 判断当前项中按钮控件不为空时 if (holder.del != null) { // 按下和松开绝对值差当大于20时显示删除按钮,否则不显示 if (Math.abs(x - ux) > 20) { holder.del.setVisibility(View.VISIBLE); curDel_btn = holder.del; return true; } } } else if (event.getAction() == MotionEvent.ACTION_MOVE) {// 当滑动时背景为选中状态 return true; // v.setBackgroundResource(R.drawable.mm_listitem_pressed); } else {// 其他模式 // 设置背景为未选中正常状态 // v.setBackgroundResource(R.drawable.mm_listitem_simple); } return true; } });
findFragmentById空指针问题
一个fragment是动态添加到一个activity中的。fragment中有一个ListView控件。那我怎么在这个activity中找到这个listView控件?因为是动态添加,不能用findFragmentById,但是new一个fragment,再用fragment.getView().findViewById还报空指针,这怎么解决??
android fragment中listview.setAdapter为空的问题
android新手想多联系下fragment的使用,可在listview.setAdapter时遇到了如下问题: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at com.example.sms.InsertFragment.onCreate(InsertFragment.java:73) 以下是代码 ``` private ListView insert_choose_listView; ArrayList<HashMap<String, String>> listItem; MyAdapter myAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } listItem = new ArrayList<HashMap<String,String>>(); HashMap<String, String> map = new HashMap<String, String>(); map.put("Insert"," Insert Teacher");listItem.add(map); map.put("Insert"," Insert Student");listItem.add(map); map.put("Insert"," Insert Course");listItem.add(map); myAdapter=new MyAdapter(this.getActivity()); insert_choose_listView.setAdapter(myAdapter); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_insert, container, false); insert_choose_listView=(ListView)view.findViewById(R.id.insert_choose_listview); return view; } private class MyAdapter extends BaseAdapter { private LayoutInflater mInflater;//得到一个LayoutInfalter对象用来导入布局 public MyAdapter (Context context){ this.mInflater= LayoutInflater.from(context); } public int getCount(){ return listItem.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { InsertFragment.MyAdapter.ViewHolder holder; //观察convertView随ListView滚动情况 Log.v("MyListViewBase", "getView " + position + " " + convertView); if (convertView == null) { convertView = mInflater.inflate(R.layout.flistviewlayout,null); holder = new InsertFragment.MyAdapter.ViewHolder(); /**得到各个控件的对象*/ holder.title = (TextView) convertView.findViewById(R.id.ftext); convertView.setTag(holder);//绑定ViewHolder对象 } else{ holder = (InsertFragment.MyAdapter.ViewHolder)convertView.getTag();//取出ViewHolder对象 } /**设置TextView显示的内容,即我们存放在动态数组中的数据*/ holder.title.setText(listItem.get(position).get("Insert").toString()); return convertView; } /**存放控件*/ public final class ViewHolder{ public TextView title; } ``` 报错的73行是insert_choose_listView.setAdapter(myAdapter);这句 我在Activity中这样加入ListView是不会报错的可是放到Fragment中就成了空的 求解答
关于在fragment中加入viewpager的问题,请指教。。
public class FragmentCategory extends Fragment{ //声明viewpager private ViewPager viewPager; //声明数据源 private List<Fragment> list; //声明适配器 private FragmentStatePagerAdapter adapter; //声明view private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_category, container, false); init(); return view; } //初始化控件的方法 private void init() { // TODO Auto-generated method stub //得到viewpager viewPager=(ViewPager) view.findViewById(R.id.viewpager_tab); //得到列表 list=new ArrayList<Fragment>(); //往列表里添加fragment Information information=new Information(); Market market=new Market(); Circle circle=new Circle(); list.add(information); list.add(market); list.add(circle); //声明适配器 adapter=new FragmentStatePagerAdapter(getChildFragmentManager()) { @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Fragment getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } @Override public Object instantiateItem(ViewGroup arg0, int arg1) { // TODO Auto-generated method stub return super.instantiateItem(arg0, arg1); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub super.destroyItem(container, position, object); } }; viewPager.setAdapter(adapter); } } log日志报的错 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yanis.yc_ui_fragment_menu/com.yanis.yc_ui_fragment_menu.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 仔细检查了XML文件,没有发现问题。。。求大神指教下。。
Android 当中的 MVC 和 MVP 究竟是如何区分的?
最近在看架构方面的资料,对于 MVC 和 MVP 有些搞不明白。 MVC: M 层就是用户自己编写的类,页面的逻辑都在这里实现(譬如访问数据库、访问网络、以及各种逻辑操作算法等等),可以总结归纳为 M 层的作用就是“这个页面的功能” V 层就是各种控件,用来接受用户信息(譬如各种按钮、各种编辑框)和展示信息给用户(类如TextView ImageView 等) C 层的概念我有些模糊,看一些博客上讲,它是沟通 M 和 V 的桥梁。我有些搞不懂。 我是这么理解的,我们需要在C 层当中创建 M 层的对象然后调用其相关方法:譬如访问网络方法、存储数据方法,而这些方法所用到的参数就通过V层来获取,同时如果M层有数据返回,那么V层可以直接操作这个返回的数据。 总感觉哪里不太对,请问大家,我这个理解有问题吗? MVP: 在这个模式里,是将Activity或者Fragment作为V层,而将原本 MVC 当中 C 层的沟通逻辑放到了新定义的 P 层当中。 是这样吗? ----------大年二十八update-------------- 我举个例子,譬如实现一个功能,用户输入一个id(数字),然后匹配数据库当中是否有这个id,如果有,就在页面上显示这个id对象的message,如果没有,就显示没有 在 MVC 当中 M 层自然有一个 String search(int id)方法,方法体就是通过id去执行查询 V 层就是获取用户输入的id,以及获取用户的点击查询输入,还有显示查询结果 C 层就是 Activity或者Fragment,我们在 Activity当中创建model对象并调用search方法,并且将V层输入的id作为参数传入。 所谓的M层和V层耦合,就是search方法返回的数据,可以直接调用 V 层的 text.settext(message )来将内容显示出来 我这么理解有问题吗?
Unable to start activity ComponentInfo{XX}: 空指针
Unable to start activity ComponentInfo{XX}: java.lang.NullPointerException 错误截图: ![图片说明](https://img-ask.csdn.net/upload/201504/13/1428927253_629583.png) 主Activity: ``` package com.chow.hyit2a; import com.chow.hyit2a.R.*; import com.chow.hyit2a.Fragements.Fragement_MyCenter_in_TabActivity; import com.chow.hyit2a.Fragements.Fragement_Referee_in_TabActivity; import com.chow.hyit2a.Fragements.Fragement_checkin_in_TabActivity; import com.chow.hyit2a.Fragements.Fragement_rank_in_TabActivity; import android.annotation.SuppressLint; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.LinearLayout; public class MainTabActivity extends Activity implements OnClickListener { private com.chow.hyit2a.Fragements.Fragement_checkin_in_TabActivity fragement_checkin_in_TabActivity; private com.chow.hyit2a.Fragements.Fragement_rank_in_TabActivity fragement_rank_in_TabActivity; private com.chow.hyit2a.Fragements.Fragement_Referee_in_TabActivity fragement_Referee_in_TabActivity; private com.chow.hyit2a.Fragements.Fragement_MyCenter_in_TabActivity fragement_MyCenter_in_TabActivity; /** * 底部四个按钮 */ private LinearLayout layout_bt_checkin_in_TabActivity; private LinearLayout layout_bt_rank_in_TabActivity; private LinearLayout layout_bt_Referee_in_TabActivity; private LinearLayout layout_bt_MyCenter_in_TabActivity; /** * 用于对Fragment进行管理 */ private FragmentManager fragmentManager; // private ActionBar ab=getActionBar(); @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_tab); ActionBar ab = getActionBar(); ab.hide(); initViews(); fragmentManager = getFragmentManager(); setTabSelection(0); } private void initViews() { layout_bt_checkin_in_TabActivity = (LinearLayout) findViewById(R.id.id_tab_bottom_competioncheck); layout_bt_rank_in_TabActivity = (LinearLayout) findViewById(R.id.id_tab_bottom_rank); layout_bt_Referee_in_TabActivity = (LinearLayout) findViewById(R.id.id_tab_bottom_points); layout_bt_MyCenter_in_TabActivity = (LinearLayout) findViewById(R.id.id_tab_bottom_mycenter); layout_bt_checkin_in_TabActivity.setOnClickListener(this); layout_bt_rank_in_TabActivity.setOnClickListener(this); layout_bt_Referee_in_TabActivity.setOnClickListener(this); layout_bt_MyCenter_in_TabActivity.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.id_tab_bottom_competioncheck: setTabSelection(0); break; case R.id.id_tab_bottom_rank: setTabSelection(1); break; case R.id.id_tab_bottom_points: setTabSelection(2); break; case R.id.id_tab_bottom_mycenter: setTabSelection(3); break; default: break; } } /** * 根据传入的index参数来设置选中的tab页。 * */ @SuppressLint("NewApi") private void setTabSelection(int index) { // 重置按钮 resetBtn(); // 开启一个Fragment事务 FragmentTransaction transaction = fragmentManager.beginTransaction(); // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况 hideFragments(transaction); switch (index) { case 0: // 当点击了消息tab时,改变控件的图片和文字颜色 ((ImageButton) layout_bt_checkin_in_TabActivity .findViewById(R.id.btn_tab_competioncheck)) .setImageResource(R.drawable.competioncheckin_light_png); if (fragement_checkin_in_TabActivity == null) { // 如果MessageFragment为空,则创建一个并添加到界面上 fragement_checkin_in_TabActivity = new com.chow.hyit2a.Fragements.Fragement_checkin_in_TabActivity(); transaction.replace(R.id.id_content, fragement_checkin_in_TabActivity); } else { // 如果MessageFragment不为空,则直接将它显示出来 transaction.show(fragement_checkin_in_TabActivity); } break; case 1: // 当点击了消息tab时,改变控件的图片和文字颜色 ((ImageButton) layout_bt_rank_in_TabActivity .findViewById(R.id.btn_tab_bottom_rank)) .setImageResource(R.drawable.rank_png_light); if (fragement_rank_in_TabActivity == null) { // 如果MessageFragment为空,则创建一个并添加到界面上 fragement_rank_in_TabActivity = new com.chow.hyit2a.Fragements.Fragement_rank_in_TabActivity(); transaction.replace(R.id.id_content, fragement_rank_in_TabActivity); } else { // 如果MessageFragment不为空,则直接将它显示出来 transaction.show(fragement_rank_in_TabActivity); } break; case 2: // 当点击了动态tab时,改变控件的图片和文字颜色 ((ImageButton) layout_bt_Referee_in_TabActivity .findViewById(R.id.btn_tab_bottom_points)) .setImageResource(R.drawable.points_png_light); if (fragement_Referee_in_TabActivity == null) { // 如果NewsFragment为空,则创建一个并添加到界面上 fragement_Referee_in_TabActivity = new com.chow.hyit2a.Fragements.Fragement_Referee_in_TabActivity(); transaction.replace(R.id.id_content, fragement_Referee_in_TabActivity); } else { // 如果NewsFragment不为空,则直接将它显示出来 transaction.show(fragement_Referee_in_TabActivity); } break; case 3: // 当点击了设置tab时,改变控件的图片和文字颜色 ((ImageButton) layout_bt_MyCenter_in_TabActivity .findViewById(R.id.btn_tab_bottom_mycenter)) .setImageResource(R.drawable.mycenter_png_light); if (fragement_MyCenter_in_TabActivity == null) { // 如果SettingFragment为空,则创建一个并添加到界面上 fragement_MyCenter_in_TabActivity = new com.chow.hyit2a.Fragements.Fragement_MyCenter_in_TabActivity(); transaction.replace(R.id.id_content, fragement_MyCenter_in_TabActivity); } else { // 如果SettingFragment不为空,则直接将它显示出来 transaction.show(fragement_MyCenter_in_TabActivity); } break; } transaction.commit(); } /** * 清除掉所有的选中状态。 */ private void resetBtn() { ((ImageButton) layout_bt_checkin_in_TabActivity .findViewById(R.id.btn_tab_competioncheck)) .setImageResource(R.drawable.competioncheckin_png); ((ImageButton) layout_bt_rank_in_TabActivity .findViewById(R.id.btn_tab_bottom_rank)) .setImageResource(R.drawable.rank_png); ((ImageButton) layout_bt_Referee_in_TabActivity .findViewById(R.id.btn_tab_bottom_points)) .setImageResource(R.drawable.points_png); ((ImageButton) layout_bt_MyCenter_in_TabActivity .findViewById(R.id.btn_tab_bottom_mycenter)) .setImageResource(R.drawable.mycenter_png); } /** * 将所有的Fragment都置为隐藏状态。 * * @param transaction * 用于对Fragment执行操作的事务 */ @SuppressLint("NewApi") private void hideFragments(FragmentTransaction transaction) { if (layout_bt_checkin_in_TabActivity != null) { transaction.hide(fragement_checkin_in_TabActivity); } if (layout_bt_rank_in_TabActivity != null) { transaction.hide(fragement_rank_in_TabActivity); } if (layout_bt_Referee_in_TabActivity != null) { transaction.hide(fragement_Referee_in_TabActivity); } if (layout_bt_MyCenter_in_TabActivity != null) { transaction.hide(fragement_MyCenter_in_TabActivity); } } } ``` MainFest ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.chow.hyit2a" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainTabActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".RegisterActivity" android:label="欢迎注册" > </activity> <activity android:name=".MainFucntionActivity" android:label="@string/title_activity_main_fucntion" > </activity> <activity android:name=".MainActivity" android:label="" > </activity> </application> </manifest> ```
Android利用单例模式更改控件的属性,无法实现的问题
# 这是MainActivity中的代码,主要是加粗部分的代码,本打算通过Button的Onclick方法,来调用单例里边的Txtchange方法,来改变TextView的text,但是就是不法实现,求大神指点 package com.example.controlproject0311; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.os.Build; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); RelativeLayout mainLayout = new RelativeLayout(this); mainLayout.setId(11); setContentView(mainLayout); Button button = new Button(this); button.setId(20); button.setText("hello"); button.setTextSize(40); button.setTranslationX(50); button.setTranslationY(60); mainLayout.addView(button); final TextView txtView = new TextView(this); txtView.setText("one"); txtView.setId(12); mainLayout.addView(txtView); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // SingletonControl.getInstance().txtChange(); Singleton2.getInstance().sayhello(); ****Singleton2.getInstance().SetText(txtView.getId()); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } ``` ``` ## 这是单例的代码 package com.example.controlproject0311; import android.app.Activity; import android.widget.TextView; public class Singleton2 extends Activity { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */ private static Singleton2 instance = null; /* 私有构造方法,防止被实例化 */ private Singleton2() { } /* 1:懒汉式,静态工程方法,创建实例 */ public static Singleton2 getInstance() { if (instance == null) { instance = new Singleton2(); } return instance; } public void sayhello() { System.out.println("are you ok"); } public void SetText(int id) { TextView textView = (TextView) findViewById(id); textView.setText("weew"); } } ``` ```
自定义view与selector冲突
上面图中上面大红框框住的是相对布局,下面蓝色背景的是横向scrollView套线性布局套GridView,我想要实现GridView的Item(用ImageView)选中后白色图片换成绿色图片的效果,如果上面的相对布局不加载任何控件时效果已经达到了,但是我要在相对布局里用代码动态加载控件,addView后就切图就失效了,我不知道这两者有什么关系,请求各位大大帮帮忙,前提是相对布局不动,不能换成XML解析的.另外GridView是在Activity里,相对布局是在Fragment里![图片](https://img-ask.csdn.net/upload/201512/17/1450360179_555756.png)
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问