片段之间notifydatasetchange不工作? [英] notifydatasetchange doesnt work between fragments?
问题描述
我有一个疑问,我有两个片段,即一个的frag和片段的B同样的活动需要从B到A传递数据。从B数据需要填充的ListView动态我试图notifydatasetchange(),但它仍然没有到目前为止,我已经尝试的工作。
片段B:
包first.service precision.servicefirst。/ **
*创建于4264的23-11-2015。
* /
进口android.app.Fragment;
进口android.app.FragmentManager;
进口android.app.FragmentTransaction;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.Spinner;公共类NewRequirements扩展片段{
添加添加;
customListAdapterldrequirements customListAdapterldrequirements; //公共静态的newInstance NewRequirements(束束){ //添加myFragment =新的Add();
// myFragment.setArguments(包);
//} //} @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
// TODO自动生成方法存根 查看查看= inflater.inflate(R.layout.fragment_dialog_claim,集装箱,
假);
最终按钮btnupdate;
btnupdate =(按钮)view.findViewById(R.id.update);
最后的微调SBU =(微调)view.findViewById(R.id.sbuu);
最终的EditText requiremtns =(EditText上)view.findViewById(R.id.txtEmployee code);
最后ArrayAdapter<&CharSequence的GT; adaptersbu = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adaptersbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbu.setAdapter(adaptersbu);
最后的微调BU =(微调)view.findViewById(R.id.bu);
最后ArrayAdapter<&CharSequence的GT; adapterbu = ArrayAdapter.createFromResource(getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adapterbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bu.setAdapter(adapterbu);
最后的微调SBUU =(微调)view.findViewById(R.id.sbu);
最后ArrayAdapter<&CharSequence的GT; adaptersbuu = ArrayAdapter.createFromResource(getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adaptersbuu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbuu.setAdapter(adaptersbuu);
最后的微调SC =(微调)view.findViewById(R.id.sc);
ArrayAdapter<&CharSequence的GT; adaptersc = ArrayAdapter.createFromResource(getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adaptersc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sc.setAdapter(adaptersc);
最后的微调SSC =(微调)view.findViewById(R.id.ssc);
ArrayAdapter<&CharSequence的GT; adapterssc = ArrayAdapter.createFromResource
(getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adapterssc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ssc.setAdapter(adapterssc);
setHasOptionsMenu(真);
添加附加=(添加)getFragmentManager()findFragmentByTag(信息)。
add.updateListView(); btnupdate.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){ 。字符串str = sbu.getSelectedItem()的toString();
。字符串business_unit = bu.getSelectedItem()的toString();
。字符串sub_business_unit = sbuu.getSelectedItem()的toString();
。字符串服务= sc.getSelectedItem()的toString();
。字符串servicec = ssc.getSelectedItem()的toString(); 。字符串REQ = requiremtns.getText()的toString();
FragmentManager FM = getFragmentManager();
添加附加=新的Add(); // bundle.putString(是,STR);
// Log.i(捆绑,bundle.toString());
// Log.v(添加,STR);
// add.setArguments(包);
Main2Activity.sbu =海峡;
Main2Activity.bu = business_unit;
Main2Activity.sbuu = sub_business_unit;
Main2Activity.sc =服务;
Main2Activity.ssc = servicec;
Main2Activity.req = REQ;
FragmentTransaction英尺= fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.content_frame,添加HI); //add.lv.setVisibility(View.VISIBLE);
ft.addToBackStack(NULL);
ft.commit();
} });
返回视图。
}}
片段:
包first.service precision.servicefirst。/ **
*创建于4264的23-11-2015。
* /
进口android.app.Fragment;
进口android.app.FragmentManager;
进口android.app.FragmentTransaction;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.AdapterView;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.ListView;
进口android.widget.Spinner;
进口android.widget.TextView;进口的java.util.ArrayList;/ **
*创建于4264的16-10-2015。
* /
公共类添加扩展片段实现View.OnClickListener
{
私人的ListView LV;
静态字符串SBU,SBUU,SC,SSC,REQ;
静态字符串蒲式耳;
静态布尔单;
添加添加; customListAdapterldrequirements CUS;
私人的ArrayList< LdNewsItem> ldnews; 公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
尝试{
查看rootView = inflater.inflate(R.layout.activity_btn_add,集装箱,FALSE);
微调ldsource =(微调)rootView.findViewById(R.id.lead_source);
ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox1,R.layout.spinnerlayout);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldsource.setAdapter(适配器);
// EDITTEXT的EditText =(EditText上)rootView.findViewById(R.id.title); 微调ldtype =(微调)rootView.findViewById(R.id.ldtype);
ArrayAdapter<&CharSequence的GT;适配器1 = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox2,R.layout.spinnerlayout); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldtype.setAdapter(适配器1);
微调ldstatus =(微调)rootView.findViewById(R.id.ldstatus);
TextView的TXT =(TextView中)rootView.findViewById(R.id.spinnerTarget);
ArrayAdapter<&CharSequence的GT;适配器2 = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox3,R.layout.spinnerlayout); adapter2.setDropDownViewResource(android.R.layout.simple_selectable_list_item);
ldstatus.setAdapter(适配器2);
//捆绑包= getArguments();
//串好= bundle.getString(SBU);
捆绑包= getArguments();// SBU = getArguments()的getString(是)。
//公共布尔onTouch(视图V,MotionEvent事件){
//返回false;
//} //通过触摸监听器设置用于处理内部滚动型触摸
//}); LV =(ListView控件)rootView.findViewById(R.id.ldrequirements);
// customListAdapterldrequirements customListAdapterldrequirements =新customListAdapterldrequirements(getActivity(),listContact); ArrayList的< LdNewsItem> listContact = GetlistContact();
lv.setAdapter(新customListAdapterldrequirements(getActivity(),listContact));
customListAdapterldrequirements customListAdapterldrequirements =新customListAdapterldrequirements(getActivity(),listContact); // CUS =新customListAdapterldrequirements(这一点,ldnews);
lv.setOnItemClickListener(新AdapterView.OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司,观景,INT位置,
长ID){ 如果(单){
NewRequirements newRequirements =新NewRequirements();
FragmentManager FM = getFragmentManager();
FragmentTransaction英尺= fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); // lv.deferNotifyDataSetChanged();
ft.replace(R.id.content_frame,newRequirements,HI);
ft.addToBackStack(NULL);
ft.commit(); }其他{ lv.getItemIdAtPosition(位置);
}
}
});
/ * lv.setOnTouchListener(新View.OnTouchListener(){
@覆盖
公共布尔onTouch(视图V,MotionEvent事件){
返回false;
}
//通过触摸监听器设置用于处理内部滚动型触摸
// @覆盖
//公共布尔onTouch(视图V,MotionEvent事件){
//禁止对儿童鉴于触摸父滚动触摸请求 // v.getParent()requestDisallowInterceptTouchEvent(真);
//
//返回false;
//}
}); * /
返回rootView; }赶上(例外五){
Ë扔掉;
}
}
私人的ArrayList< LdNewsItem> GetlistContact()
{
ArrayList的< LdNewsItem> contactlist =新的ArrayList< LdNewsItem>();
//字符串str = getArguments()的getString(是)。
//字符串str =测试;
// NewRequirements newr =新NewRequirements();
//字符串瑜珈= getArguments()的getString(SBU);
// sbu.notify();
SBU = Main2Activity.sbu;
BU = Main2Activity.bu;
SBUU = Main2Activity.sbuu;
SC = Main2Activity.sc;
SSC = Main2Activity.ssc;
REQ = Main2Activity.req;
的for(int i = 1; I< = 5;我++){
LdNewsItem接触=新LdNewsItem();
contact.setSbu(SBU);
contact.setBu(BU);
contact.setSbuu(SBUU);
contact.setSc(SC);
contact.setSsc(SSC);
contact.setReq(REQ);
// contact.setReporterName(不管你的房子有多大,你的车是如何新,或您的银行帐户有多大 - 我们的坟墓将永远是相同的大小保持谦虚。+ I);
contactlist.add(接触);
//lv.setAdapter((ListAdapter)contactlist); } 返回contactlist;
} @覆盖
公共无效onActivityCreated(捆绑savedInstanceState){
super.onActivityCreated(savedInstanceState); 片段片段= NULL;
setHasOptionsMenu(真);
按钮btnrequirements =(按钮)getActivity()findViewById(R.id.btnrequirements)。
btnrequirements.setOnClickListener(本);
。按钮btnactnt =(按钮)getActivity()findViewById(R.id.btnacnt);
btnactnt.setOnClickListener(本);
。按钮btnprimary =(按钮)getActivity()findViewById(R.id.btnprimary);
btnprimary.setOnClickListener(本);
。按钮btnsecondary =(按钮)getActivity()findViewById(R.id.btnsecondary);
btnsecondary.setOnClickListener(本);
} @覆盖
公共无效的onClick(视图v){
开关(v.getId()){
案例R.id.btnrequirements:
片段newFragment =新NewRequirements();
//考虑使用Java编码约定(上部第一个字符类的名字!)
FragmentTransaction交易= getFragmentManager()调用BeginTransaction()。
//替换无论是在fragment_container认为这个片段,
//和事务添加到后退堆栈
transaction.replace(R.id.content_frame,newFragment);
transaction.addToBackStack(NULL);
//提交事务
器transaction.commit();
打破; 案例R.id.btnacnt:
FragmentManager FM = getFragmentManager();
// FragmentTransaction英尺= fm.beginTransaction();
SelectAccountDialog selectAccountDialog =新SelectAccountDialog();
selectAccountDialog.setRetainInstance(真);
selectAccountDialog.show(FM,fragment_name); //ft.addToBackStack(null); 打破;
案例R.id.btnprimary:
FragmentManager FMM = getFragmentManager();
// FragmentTransaction FTT = fmm.beginTransaction();
SelectAccountDialog selectAccountDialog1 =新SelectAccountDialog();
selectAccountDialog1.setRetainInstance(真);
selectAccountDialog1.show(FMMfragment_name);
// ftt.addToBackStack(NULL);
打破;
案例R.id.btnsecondary:
FragmentManager FM2 = getFragmentManager();
// FragmentTransaction fttt = fm2.beginTransaction();
SelectAccountDialog selectAccountDialog2 =新SelectAccountDialog();
selectAccountDialog2.setRetainInstance(真);
selectAccountDialog2.show(FM2,fragment_name);
// fttt.addToBackStack(NULL);
打破; } }
公共无效updateListView(){
cus.notifyDataSetChanged();
}
}
这是我的customlistadapter:
包first.service precision.servicefirst。/ **
*创建于4264的23-11-2015。
* /
进口android.content.Context;
进口android.graphics.Color;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.TextView;进口的java.util.ArrayList;/ **
*创建于4264的2015年12月11日。
* /
公共类customListAdapterldrequirements延伸BaseAdapter { 添加添加;
私人的ArrayList< LdNewsItem>的ListData;
私人LayoutInflater layoutInflater; 公共customListAdapterldrequirements(上下文的背景下,ArrayList的< LdNewsItem>的ListData){
this.listData =的ListData;
layoutInflater = LayoutInflater.from(上下文);
} @覆盖
公众诠释的getCount(){ 返回listData.size();
} @覆盖
公共对象的getItem(INT位置){ 返回listData.get(位置);
}
@覆盖
众长getItemId(INT位置){
返回的位置;
} 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
ViewHolder持有人; 查看MVIEW = convertView; // convertView.setBackgroundColor(Color.parseColor(#E5E5E5)); 如果(convertView == NULL){
convertView = layoutInflater.inflate(R.layout.list_ld_requirements,NULL); 持有人=新ViewHolder();
holder.headlineView =(TextView中)convertView.findViewById(R.id.sbu);
holder.reporterNameView =(TextView中)convertView.findViewById(R.id.bu);
holder.reportedDateView =(TextView中)convertView.findViewById(R.id.sbuu);
holder.ldstatusView =(TextView中)convertView.findViewById(R.id.sc);
holder.ldtype =(TextView中)convertView.findViewById(R.id.ssc);
holder.ldsource =(TextView中)convertView.findViewById(R.id.rq);
// add.lv.setVisibility(View.INVISIBLE);
convertView.setTag(保持器); }其他{
支架=(ViewHolder)convertView.getTag();
}
// add.lv.setVisibility(View.VISIBLE);
holder.headlineView.setText(战略业务部:+ listData.get(位置).getSbu());
holder.reportedDateView.setText(业务部+ listData.get(位置).getSbuu());
holder.ldstatusView.setText(子业务部:+ listData.get(位置).getSc());
holder.ldtype.setText(服务类别:+ listData.get(位置).getSsc());
holder.ldsource.setText(服务子类别:+ listData.get(位置).getReq());
convertView.setBackgroundColor(Color.parseColor(#E5E5E5)); // holder.headlineView.setText(要求:+ listData.get(位置).getReq());
返回convertView;
} 静态类ViewHolder {
公众的TextView headlineView;
公众的TextView reporterNameView;
公众的TextView reportedDateView;
公众的TextView ldstatusView;
公众的TextView ldtype;
公众的TextView ldsource;
公众的TextView REQ;
}
}
我的主要活动:
包first.service precision.servicefirst。进口android.annotation.Sup pressLint;
进口android.app.ActionBar;
进口android.app.Activity;
进口android.app.Fragment;
进口android.app.FragmentManager;
进口android.app.FragmentTransaction;
进口android.graphics.Color;
进口android.graphics.drawable.ColorDrawable;
进口android.os.Bundle;
进口android.support.v4.widget.DrawerLayout;
进口android.support.v7.app.ActionBarDrawerToggle;
进口android.util.Log;
进口android.view.Gravity;
进口android.view.Menu;
进口android.view.MenuInflater;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.AdapterView;
进口android.widget.AdapterView.OnItemClickListener;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.ListView;
公共类Main2Activity延伸活动{ 公共静态字符串SBU,卜,SBUU,SC,SSC,REQ; //在其全部活动是封闭
私人DrawerLayout mDrawerLayout; //重的ListView presents抽屉式导航栏
私人的ListView mDrawerList;
按钮butonlead;
// ActionBarDrawerToggle表明抽屉式导航的操作栏中的presence
私人ActionBarDrawerToggle mDrawerToggle; //操作栏标题
私人字符串mTitle =;
@燮pressLint(NewApi)
@覆盖
保护无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main2); 最后的动作条AB = getActionBar();
ab.show();
//获取参考DrawerLayout
mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
ab.setTitle(mTitle); mDrawerList =(ListView控件)findViewById(R.id.drawer_list); //获取参考ActionBarDrawerToggle
mDrawerToggle =新ActionBarDrawerToggle(这一点,mDrawerLayout, R.string.open_drawer,
R.string.close_drawer){ 当抽屉被关闭调用/ ** * /
公共无效onDrawerClosed(查看视图){ invalidateOptionsMenu(); } / **抽屉被打开时调用* /
公共无效onDrawerOpened(查看drawerView){ invalidateOptionsMenu();
}
}; //对DrawerLayout设置DrawerToggle
mDrawerLayout.setDrawerListener(mDrawerToggle); //创建一个ArrayAdapter将项目添加到列表视图mDrawerList
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(getApplication()
。R.layout.drawer_list_item,R.id.title,getResources()getStringArray(R.array.option)); //设置上mDrawerList适配器
mDrawerList.setAdapter(适配器); //启用主页按钮
ab.setHomeButtonEnabled(真);
ab.setBackgroundDrawable(新ColorDrawable(Color.parseColor(#53A93F)));
//启用向上导航
ab.show();
ab.setDisplayHomeAsUpEnabled(真); //设置项目点击监听器为ListView mDrawerList
mDrawerList.setOnItemClickListener(新OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){ //获取一组选项
的String []菜单项= getResources()getStringArray(R.array.option)。 //当前选定的选项
mTitle =菜单项[位置] 片段片段= NULL;
开关(位置){
情况下0:
片段=新的线索();
打破;
情况1:
片段=新机遇();
打破;
案例2:
片段=新帐户();
打破;
案例3:
片段=新Contactss();
打破;
情况4:
片段=新的文件();
打破;
情况5:
片段=新报告();
默认:
打破;
}
如果(片段!= NULL){
//获取参考FragmentManager
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()取代(R.id.content_frame,片段).addToBackStack(fragback)提交()。
//创建一个片段交易
FragmentTransaction英尺= fragmentManager.beginTransaction(); //添加一个片段片段交易
ft.replace(R.id.content_frame,片段); //提交事务
ft.commit(); //关闭抽屉
mDrawerLayout.closeDrawer(mDrawerList);
}其他{
//错误创建片段
Log.e(MainActivity,出错创建片段);
} }
});
} @覆盖
公共无效onBack pressed(){
如果(mDrawerLayout.isDrawerOpen(Gravity.LEFT)){
mDrawerLayout.closeDrawer(mDrawerList);
}其他{
super.onBack pressed();
} }
@覆盖
保护无效onPostCreate(捆绑savedInstanceState){
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
} @覆盖
公共布尔onOptionsItemSelected(菜单项项){
如果(mDrawerToggle.onOptionsItemSelected(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
} / **
*每当我们称之为invalidateOptionsMenu()调用
* /
@覆盖
prepareOptionsMenu(菜单菜单)上公共布尔{
//如果抽屉被打开,隐藏操作项相关内容视图
布尔drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
返回super.on prepareOptionsMenu(菜单);
} @覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
MenuInflater吹气= getMenuInflater();
inflater.inflate(R.menu.main2,菜单);
返回super.onCreateOptionsMenu(菜单);
} / * @覆盖
公共无效DataTransfer(串E){
} * /
//
// @覆盖
//公共无效DataTransfer(ArrayList的<串GT; e){
//添加OBJ =(添加)getFragmentManager()findFragmentById(R.id.frag_1)。
// obj.GetlistContact(E);
//}
}
/ * @覆盖
公共无效的SelectedValue(String s)将{
添加附加=新的Add();
FragmentManager FM = getFragmentManager();
FragmentTransaction英尺= fm.beginTransaction();
ft.replace(R.id.content_frame,补充);
ft.commit();}
}
* /
我希望你们来帮我们初学者和我们一样提前感谢!
你可以通过使用片段标签从fragB更新从断枝B您的frag一个你可以这样调用,
弗拉加F =(弗拉加)getSupportFragmentManager()findFragmentByTag(yourfragATag);
//更新列表视图
f.updateListView();
现在如何声明标记....
您可以在指定的时间标记名时,片段被连接到容器MainActivity
块引用>
块引用>///这是你如何设置标签片段片段= NULL;
字符串标记=;
开关(位置){
情况下0:
片段=新的线索();
标签=线索;
打破;
情况1:
标签=机遇
片段=新机遇();
打破;
案例2:
标签=帐户;
片段=新帐户();
打破;
案例3:
标签=Contactss;
片段=新Contactss();
打破;
情况4:
片段=新的文件();
打破;
情况5:
片段=新报告();
默认:
打破;
}
如果(片段!= NULL){
//获取参考FragmentManager
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()取代(R.id.content_frame,片段).addToBackStack(fragback)提交()。
//创建一个片段交易
FragmentTransaction英尺= fragmentManager.beginTransaction(); //添加一个片段片段交易
ft.replace(R.id.content_frame,片段标签); //提交事务
ft.commit(); //关闭抽屉
mDrawerLayout.closeDrawer(mDrawerList);
}:)
I have a doubt i have two fragments namely frag a and frag b of same activity need to pass data from b to a . data from b need to populate listview dynamically i tried notifydatasetchange() but still it doesn't work so far what i have tried is
fragment b:
package first.service.precision.servicefirst; /** * Created by 4264 on 23-11-2015. */ import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; public class NewRequirements extends Fragment { Add add; customListAdapterldrequirements customListAdapterldrequirements; //public static NewRequirements newInstance(Bundle bundle) { // Add myFragment = new Add(); // myFragment.setArguments(bundle); //} // } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.fragment_dialog_claim, container, false); final Button btnupdate; btnupdate = (Button) view.findViewById(R.id.update); final Spinner sbu = (Spinner) view.findViewById(R.id.sbuu); final EditText requiremtns=(EditText)view.findViewById(R.id.txtEmployeeCode); final ArrayAdapter<CharSequence> adaptersbu = ArrayAdapter.createFromResource( getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout); adaptersbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sbu.setAdapter(adaptersbu); final Spinner bu = (Spinner) view.findViewById(R.id.bu); final ArrayAdapter<CharSequence> adapterbu = ArrayAdapter.createFromResource(getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout); adapterbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); bu.setAdapter(adapterbu); final Spinner sbuu = (Spinner) view.findViewById(R.id.sbu); final ArrayAdapter<CharSequence> adaptersbuu = ArrayAdapter.createFromResource(getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout); adaptersbuu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sbuu.setAdapter(adaptersbuu); final Spinner sc = (Spinner) view.findViewById(R.id.sc); ArrayAdapter<CharSequence> adaptersc = ArrayAdapter.createFromResource(getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout); adaptersc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sc.setAdapter(adaptersc); final Spinner ssc = (Spinner) view.findViewById(R.id.ssc); ArrayAdapter<CharSequence> adapterssc = ArrayAdapter.createFromResource (getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout); adapterssc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ssc.setAdapter(adapterssc); setHasOptionsMenu(true); Add add=(Add)getFragmentManager().findFragmentByTag("leads"); add.updateListView(); btnupdate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String str = sbu.getSelectedItem().toString(); String business_unit= bu.getSelectedItem().toString(); String sub_business_unit=sbuu.getSelectedItem().toString(); String service=sc.getSelectedItem().toString(); String servicec=ssc.getSelectedItem().toString(); String req=requiremtns.getText().toString(); FragmentManager fm = getFragmentManager(); Add add = new Add(); // bundle.putString("yes", str); // Log.i("Bundle", bundle.toString()); // Log.v("Add", str); // add.setArguments(bundle); Main2Activity.sbu=str; Main2Activity.bu=business_unit; Main2Activity.sbuu=sub_business_unit; Main2Activity.sc=service; Main2Activity.ssc=servicec; Main2Activity.req=req; FragmentTransaction ft = fm.beginTransaction(); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.replace(R.id.content_frame, add, "hi"); //add.lv.setVisibility(View.VISIBLE); ft.addToBackStack(null); ft.commit(); } }); return view; } }
fragment a:
package first.service.precision.servicefirst; /** * Created by 4264 on 23-11-2015. */ import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; import java.util.ArrayList; /** * Created by 4264 on 16-10-2015. */ public class Add extends Fragment implements View.OnClickListener { private ListView lv; static String sbu,sbuu,sc,ssc,req; static String bu; static boolean single; Add add; customListAdapterldrequirements cus; private ArrayList<LdNewsItem>ldnews; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { try { View rootView = inflater.inflate(R.layout.activity_btn_add, container, false); Spinner ldsource=(Spinner)rootView.findViewById(R.id.lead_source); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( getActivity().getBaseContext(), R.array.dropbox1, R.layout.spinnerlayout); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ldsource.setAdapter(adapter); // EditText editText=(EditText)rootView.findViewById(R.id.title); Spinner ldtype=(Spinner)rootView.findViewById(R.id.ldtype); ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource( getActivity().getBaseContext(), R.array.dropbox2,R.layout.spinnerlayout); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ldtype.setAdapter(adapter1); Spinner ldstatus=(Spinner)rootView.findViewById(R.id.ldstatus); TextView txt=(TextView)rootView.findViewById(R.id.spinnerTarget); ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource( getActivity().getBaseContext(), R.array.dropbox3, R.layout.spinnerlayout); adapter2.setDropDownViewResource(android.R.layout.simple_selectable_list_item); ldstatus.setAdapter(adapter2); // Bundle bundle=getArguments(); // String good=bundle.getString("sbu"); Bundle bundle=getArguments(); // sbu = getArguments().getString("yes"); // public boolean onTouch(View v, MotionEvent event) { // return false; // } // Setting on Touch Listener for handling the touch inside ScrollView //}); lv = (ListView) rootView.findViewById(R.id.ldrequirements); //customListAdapterldrequirements customListAdapterldrequirements=new customListAdapterldrequirements(getActivity(),listContact); ArrayList<LdNewsItem> listContact = GetlistContact(); lv.setAdapter(new customListAdapterldrequirements(getActivity(), listContact)); customListAdapterldrequirements customListAdapterldrequirements=new customListAdapterldrequirements(getActivity(),listContact); // cus=new customListAdapterldrequirements(this,ldnews); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (single) { NewRequirements newRequirements = new NewRequirements(); FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); // lv.deferNotifyDataSetChanged(); ft.replace(R.id.content_frame, newRequirements, "hi"); ft.addToBackStack(null); ft.commit(); } else { lv.getItemIdAtPosition(position); } } }); /* lv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return false; } // Setting on Touch Listener for handling the touch inside ScrollView // @Override // public boolean onTouch(View v, MotionEvent event) { // Disallow the touch request for parent scroll on touch of child view // v.getParent().requestDisallowInterceptTouchEvent(true); // // return false; // } });*/ return rootView; }catch (Exception e){ throw e; } } private ArrayList<LdNewsItem> GetlistContact() { ArrayList<LdNewsItem> contactlist = new ArrayList<LdNewsItem>(); // String str=getArguments().getString("yes"); // String str="test"; // NewRequirements newr=new NewRequirements(); // String yog=getArguments().getString("sbu"); // sbu.notify(); sbu=Main2Activity.sbu; bu=Main2Activity.bu; sbuu=Main2Activity.sbuu; sc=Main2Activity.sc; ssc=Main2Activity.ssc; req=Main2Activity.req; for(int i=1;i<=5;i++) { LdNewsItem contact = new LdNewsItem(); contact.setSbu(sbu); contact.setBu(bu); contact.setSbuu(sbuu); contact.setSc(sc); contact.setSsc(ssc); contact.setReq(req); // contact.setReporterName("No matter how big your house is, how recent your car is, or how big your bank account is — our graves will always be the same size. Stay humble." + i); contactlist.add(contact); //lv.setAdapter((ListAdapter) contactlist); } return contactlist; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Fragment fragment=null; setHasOptionsMenu(true); Button btnrequirements=(Button)getActivity().findViewById(R.id.btnrequirements); btnrequirements.setOnClickListener(this); Button btnactnt=(Button)getActivity().findViewById(R.id.btnacnt); btnactnt.setOnClickListener(this); Button btnprimary=(Button)getActivity().findViewById(R.id.btnprimary); btnprimary.setOnClickListener(this); Button btnsecondary=(Button)getActivity().findViewById(R.id.btnsecondary); btnsecondary.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnrequirements: Fragment newFragment = new NewRequirements(); // consider using Java coding conventions (upper first char class names!!!) FragmentTransaction transaction = getFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit(); break; case R.id.btnacnt: FragmentManager fm=getFragmentManager(); //FragmentTransaction ft=fm.beginTransaction(); SelectAccountDialog selectAccountDialog=new SelectAccountDialog(); selectAccountDialog.setRetainInstance(true); selectAccountDialog.show(fm, "fragment_name"); //ft.addToBackStack(null); break; case R.id.btnprimary: FragmentManager fmm=getFragmentManager(); // FragmentTransaction ftt=fmm.beginTransaction(); SelectAccountDialog selectAccountDialog1=new SelectAccountDialog(); selectAccountDialog1.setRetainInstance(true); selectAccountDialog1.show(fmm, "fragment_name"); // ftt.addToBackStack(null); break; case R.id.btnsecondary: FragmentManager fm2=getFragmentManager(); // FragmentTransaction fttt=fm2.beginTransaction(); SelectAccountDialog selectAccountDialog2=new SelectAccountDialog(); selectAccountDialog2.setRetainInstance(true); selectAccountDialog2.show(fm2,"fragment_name"); // fttt.addToBackStack(null); break; } } public void updateListView() { cus.notifyDataSetChanged(); } }
this is my customlistadapter:
package first.service.precision.servicefirst; /** * Created by 4264 on 23-11-2015. */ import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; /** * Created by 4264 on 12-11-2015. */ public class customListAdapterldrequirements extends BaseAdapter{ Add add; private ArrayList<LdNewsItem> listData; private LayoutInflater layoutInflater; public customListAdapterldrequirements(Context context, ArrayList<LdNewsItem> listData) { this.listData = listData; layoutInflater = LayoutInflater.from(context); } @Override public int getCount() { return listData.size(); } @Override public Object getItem(int position) { return listData.get(position); } @Override public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; View mview = convertView; // convertView.setBackgroundColor(Color.parseColor("#E5E5E5")); if (convertView == null) { convertView = layoutInflater.inflate(R.layout.list_ld_requirements, null); holder = new ViewHolder(); holder.headlineView = (TextView) convertView.findViewById(R.id.sbu); holder.reporterNameView = (TextView) convertView.findViewById(R.id.bu); holder.reportedDateView = (TextView) convertView.findViewById(R.id.sbuu); holder.ldstatusView = (TextView) convertView.findViewById(R.id.sc); holder.ldtype = (TextView) convertView.findViewById(R.id.ssc); holder.ldsource = (TextView) convertView.findViewById(R.id.rq); // add.lv.setVisibility(View.INVISIBLE); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } // add.lv.setVisibility(View.VISIBLE); holder.headlineView.setText("Strategic Business Unit: " + listData.get(position).getSbu()); holder.reportedDateView.setText("Business Unit: " + listData.get(position).getSbuu()); holder.ldstatusView.setText("Sub Business Unit: " + listData.get(position).getSc()); holder.ldtype.setText("Service Category: " + listData.get(position).getSsc()); holder.ldsource.setText("Service Sub Category: " + listData.get(position).getReq()); convertView.setBackgroundColor(Color.parseColor("#E5E5E5")); // holder.headlineView.setText("Requirements: " +listData.get(position).getReq()); return convertView; } static class ViewHolder { public TextView headlineView; public TextView reporterNameView; public TextView reportedDateView; public TextView ldstatusView; public TextView ldtype; public TextView ldsource; public TextView req; } }
my main activity:
package first.service.precision.servicefirst; 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.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.util.Log; import android.view.Gravity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class Main2Activity extends Activity { public static String sbu,bu,sbuu,sc,ssc,req; // Within which the entire activity is enclosed private DrawerLayout mDrawerLayout; // ListView represents Navigation Drawer private ListView mDrawerList; Button butonlead; // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action bar private ActionBarDrawerToggle mDrawerToggle; // Title of the action bar private String mTitle = ""; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); final ActionBar ab = getActionBar(); ab.show(); // Getting reference to the DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); ab.setTitle(mTitle); mDrawerList = (ListView) findViewById(R.id.drawer_list); // Getting reference to the ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_drawer, R.string.close_drawer) { /** Called when drawer is closed */ public void onDrawerClosed(View view) { invalidateOptionsMenu(); } /** Called when a drawer is opened */ public void onDrawerOpened(View drawerView) { invalidateOptionsMenu(); } }; // Setting DrawerToggle on DrawerLayout mDrawerLayout.setDrawerListener(mDrawerToggle); // Creating an ArrayAdapter to add items to the listview mDrawerList ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplication(), R.layout.drawer_list_item, R.id.title, getResources().getStringArray(R.array.option)); // Setting the adapter on mDrawerList mDrawerList.setAdapter(adapter); // Enabling Home button ab.setHomeButtonEnabled(true); ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#53A93F"))); // Enabling Up navigation ab.show(); ab.setDisplayHomeAsUpEnabled(true); // Setting item click listener for the listview mDrawerList mDrawerList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Getting an array of options String[] menuItems = getResources().getStringArray(R.array.option); // Currently selected option mTitle = menuItems[position]; Fragment fragment = null; switch (position) { case 0: fragment = new Leads(); break; case 1: fragment = new Opportunities(); break; case 2: fragment = new Accounts(); break; case 3: fragment = new Contactss(); break; case 4: fragment = new Documents(); break; case 5: fragment = new Reports(); default: break; } if (fragment != null) { // Getting reference to the FragmentManager FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack("fragback").commit(); // Creating a fragment transaction FragmentTransaction ft = fragmentManager.beginTransaction(); // Adding a fragment to the fragment transaction ft.replace(R.id.content_frame, fragment); // Committing the transaction ft.commit(); // Closing the drawer mDrawerLayout.closeDrawer(mDrawerList); } else { // error in creating fragment Log.e("MainActivity", "Error in creating fragment"); } } }); } @Override public void onBackPressed() { if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { mDrawerLayout.closeDrawer(mDrawerList); } else { super.onBackPressed(); } } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } /** * Called whenever we call invalidateOptionsMenu() */ @Override public boolean onPrepareOptionsMenu(Menu menu) { // If the drawer is open, hide action items related to the content view boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main2, menu); return super.onCreateOptionsMenu(menu); } /* @Override public void DataTransfer(String e) { }*/ // // @Override // public void DataTransfer(ArrayList<String> e) { // Add obj=(Add)getFragmentManager().findFragmentById(R.id.frag_1); // obj.GetlistContact(e); // } } /* @Override public void selectedvalue(String s) { Add add=new Add(); FragmentManager fm=getFragmentManager(); FragmentTransaction ft=fm.beginTransaction(); ft.replace(R.id.content_frame,add); ft.commit();} } */
I hope you guys here to help us beginner like us thanks in advance!
解决方案Hi you can update your frag a from frag b by using fragment TAGS from fragB you can call like this,
fragA f = (fragA)getSupportFragmentManager().findFragmentByTag("yourfragATag"); // update the list view f.updateListView();
now how to declare tag....
you can assign tagname at the time when fragment is attaching to container in MainActivity
///this is how you can set tags Fragment fragment = null; String tag=""; switch (position) { case 0: fragment = new Leads(); tag="leads"; break; case 1: tag="Opportunities" fragment = new Opportunities(); break; case 2: tag="Accounts"; fragment = new Accounts(); break; case 3: tag="Contactss"; fragment = new Contactss(); break; case 4: fragment = new Documents(); break; case 5: fragment = new Reports(); default: break; } if (fragment != null) { // Getting reference to the FragmentManager FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack("fragback").commit(); // Creating a fragment transaction FragmentTransaction ft = fragmentManager.beginTransaction(); // Adding a fragment to the fragment transaction ft.replace(R.id.content_frame, fragment,tag); // Committing the transaction ft.commit(); // Closing the drawer mDrawerLayout.closeDrawer(mDrawerList); }
:)
这篇关于片段之间notifydatasetchange不工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!