Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从动态创建片段的活动中调用片段内的方法_Android_Android Fragments_Fragment - Fatal编程技术网

Android 如何从动态创建片段的活动中调用片段内的方法

Android 如何从动态创建片段的活动中调用片段内的方法,android,android-fragments,fragment,Android,Android Fragments,Fragment,我正在动态创建没有xml文件的片段,现在我想从父活动调用fragement中的方法,那么我该怎么做呢?如果任何人都知道,我发现了很多问题,但他们正在使用xml 碎片活动 public class HomeActivity extends FragmentActivity implements OnClickListener { public static final String TAG = HomeActivity.class.getSimpleName();

我正在动态创建没有xml文件的片段,现在我想从父活动调用fragement中的方法,那么我该怎么做呢?如果任何人都知道,我发现了很多问题,但他们正在使用xml

碎片活动

 public class HomeActivity extends FragmentActivity implements OnClickListener {

        public static final String TAG = HomeActivity.class.getSimpleName();
        PageIndicator mIndicator;
        //Spinner spinner1;
        ImageView serversetting,dropdown;
        TextView selectrange;
        int num,counter=0;
        String url,apiUser,apipass,TestAccount;
       /* public static HomeActivity newInstance() {
        return new HomeActivity();
        }*/

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_parent);
        ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
        selectrange=(TextView)findViewById(R.id.selectrange);
        serversetting=(ImageView)findViewById(R.id.settingsserver);
        dropdown=(ImageView)findViewById(R.id.dropdown);
        mViewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
        mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(mViewPager);

        selectrange.setOnClickListener(this);
        dropdown.setOnClickListener(this);
        serversetting.setOnClickListener(this);

        /*spinner1 = (Spinner) findViewById(R.id.spinner1);
        List<String> list = new ArrayList<String>();
        list.add("Current Month");
        list.add("Last Month");
        list.add("Last 5 Days");
        list.add("Last 10 Days");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            R.layout.spinner_layout,R.id.spinnerTarget,list);
        //dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        serversetting.setOnClickListener(this);
        spinner1.setAdapter(dataAdapter);
        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int pos,
                    long id) {
                // TODO Auto-generated method stub
                Toast.makeText(parent.getContext(), 
                        "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });*/
        }


        public class MyAdapter extends FragmentPagerAdapter {
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public Fragment getItem(int position) {
           /* Bundle args = new Bundle();
            args.putInt(TextViewFragment.POSITION_KEY, position);
            return TextViewFragment.newInstance(args);*/
            Fragment f=new Fragment();  
            switch(position) {
                case 0:
                    f= new SalesGraphFragment();

                    break; 
                case 1:
                    f=new OrderGraphFragment();
                    break;
                case 2:
                    f=new UserGraphFragment();
                    break; 
            }
            return f;
        }


        /*@Override
        public CharSequence getPageTitle(int position) {
            return "Fragment # " + position;
        }*/

        }

        @Override
        protected void onStart()
        {
         super.onStart();   
         EasyTracker.getInstance().activityStart(this);
        }

        @Override
        protected void onStop()
        {
         super.onStop();
         EasyTracker.getInstance().activityStop(this);
        }

        void SelectRangeDialog()
        {
        final CharSequence[] list = {"All time","Current Month","Last Month","Today","YesterDay"};
        AlertDialog.Builder alert = new AlertDialog.Builder(HomeActivity.this);

        if(counter==0)
        {
         num=1;
         counter++;
        }

        alert.setTitle("Range");
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub
                dialog.dismiss();



                //selectrange.setText(list[which]);
        //      new ChangeStatusAsync().execute();
            }
        });
        /*if(status.equals("Order Pending"))
            num=0;
        else if(status.equals("Upfront Received"))
            num=1;
        else if(status.equals("Payment Complete"))
            num=2;*/
        alert.setSingleChoiceItems(list,num, new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which) 
            {
                //newstatus=list[which].toString(); 
                 selectrange.setText(list[which]);
                 num=which;
            }
        });
        alert.show();
      }


        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.settingsserver:
                 Intent settings=new Intent(HomeActivity.this,SettingsActivity.class);
                 startActivity(settings);
                break;

            case R.id.selectrange:
                SelectRangeDialog();
                break;

            case R.id.dropdown:
                SelectRangeDialog();

                break;

            default:
                break;
            }

        }

    }
公共类HomeActivity扩展FragmentActivity实现OnClickListener{
公共静态最终字符串标记=HomeActivity.class.getSimpleName();
页面指示器指示器;
//喷丝器喷丝器1;
ImageView服务器设置,下拉列表;
文本视图选择范围;
int num,计数器=0;
字符串url、apiUser、apipass、TestAccount;
/*公共静态HomeActivity newInstance(){
返回新的HomeActivity();
}*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment\u父对象);
ViewPager mViewPager=(ViewPager)findViewById(R.id.ViewPager);
selectrange=(TextView)findViewById(R.id.selectrange);
serversetting=(ImageView)findViewById(R.id.settingsserver);
dropdown=(ImageView)findViewById(R.id.dropdown);
setAdapter(新的MyAdapter(getSupportFragmentManager());
mIndicator=(CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mViewPager);
选择Range.setOnClickListener(此选项);
setOnClickListener(这个);
setOnClickListener(这个);
/*喷丝头1=(喷丝头)findViewById(R.id.spinner1);
列表=新的ArrayList();
列表。添加(“本月”);
列表。添加(“上个月”);
列表。添加(“最近5天”);
列表。添加(“最近10天”);
ArrayAdapter dataAdapter=新的ArrayAdapter(此,
R.layout.spinner\u布局,R.id.spinner目标,列表);
//dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
setOnClickListener(这个);
喷丝头1.设置适配器(数据适配器);
spinner1.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、int pos、,
长id){
//TODO自动生成的方法存根
Toast.makeText(parent.getContext(),
OnItemSelectedListener:+parent.getItemAtPosition(pos.toString(),
吐司。长度(短)。show();
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});*/
}
公共类MyAdapter扩展了FragmentPagerAdapter{
公共MyAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
public int getCount(){
返回3;
}
@凌驾
公共片段getItem(int位置){
/*Bundle args=新Bundle();
args.putInt(TextViewFragment.POSITION_键,位置);
返回TextViewFragment.newInstance(args)*/
片段f=新片段();
开关(位置){
案例0:
f=新的SalesGraphFragment();
打破
案例1:
f=新的OrderGraphFragment();
打破
案例2:
f=新的UserGraphFragment();
打破
}
返回f;
}
/*@凌驾
公共字符序列getPageTitle(int位置){
返回“碎片#”+位置;
}*/
}
@凌驾
受保护的void onStart()
{
super.onStart();
EasyTracker.getInstance().activityStart(此);
}
@凌驾
受保护的void onStop()
{
super.onStop();
EasyTracker.getInstance().activityStop(此);
}
void SelectRangeDialog()
{
final CharSequence[]list={“所有时间”、“本月”、“上月”、“今天”、“昨天”};
AlertDialog.Builder alert=新建AlertDialog.Builder(HomeActivity.this);
如果(计数器==0)
{
num=1;
计数器++;
}
警报。设置标题(“范围”);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
//TODO自动生成的方法存根
dialog.dismise();
//选择range.setText(列出[哪些]);
//新建ChangeStatusAsync().execute();
}
});
/*if(状态等于(“订单待定”))
num=0;
else if(状态等于(“前期收到”))
num=1;
否则,如果(状态等于(“付款完成”))
num=2*/
alert.setSingleChoiceItems(list,num,new DialogInterface.OnClickListener()
{
@凌驾
public void onClick(DialogInterface dialog,int which)
{
//newstatus=list[which].toString();
选择range.setText(列出[哪些]);
num=哪个;
}
});
alert.show();
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
开关(v.getId()){
案例R.id.settings服务器:
意向设置=新意向(HomeActivity.this,SettingsActivity.class);
星触觉(设置);
打破
案例R.id.selectrange:
选择RangeDialog();
打破
案例R.id下拉列表:
选择RangeDialog();
打破
违约:
打破
}
}
}
public class SalesGraphFragment extends Fragment { public static final String POSITION_KEY = "com.burnside.embeddedfragmenttest.POSITION"; public static final String TITLE_KEY = "com.burnside.embeddedfragmenttest.TITLE"; Object saleData[]; String strSales=""; TextView txt; public Object b; List array; public Object [] objects; public static SalesGraphFragment INSTANCE; LinearLayout layout; String sessionId,url,amount,apiUser,apipass,TestAccount; MagentoStoreLogin sales=new MagentoStoreLogin(); public ProgressDialog order_dialog; public static SalesGraphFragment newInstance(Bundle args) { SalesGraphFragment fragment = new SalesGraphFragment(); fragment.setArguments(args); ProgressDialog order_dialog; return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try{ TestAccount=getActivity().getIntent().getExtras().getString("TestAccount"); if(TestAccount==null) TestAccount=""; if(TestAccount.equals("TestAccount")) { url =getActivity().getIntent().getExtras().getString("defaulturl"); apiUser=getActivity().getIntent().getExtras().getString("defaultapiuser"); apipass=getActivity().getIntent().getExtras().getString("defaultapipass"); System.out.println(url + apipass + apiUser); } else { url=PreferenceConnector.readString(getActivity(),PreferenceConnector.URL, null); System.out.println("URL is:"+url); apiUser=PreferenceConnector.readString(getActivity(),PreferenceConnector.APIUSER, null); apipass=PreferenceConnector.readString(getActivity(),PreferenceConnector.APIPASS, null); new saleDetail().execute(); new GraphValue().execute(); System.out.println(url + apipass + apiUser); } if(url!=null&&url!="") { //Load the first 12 items // counter=0; } else { Toast.makeText(getActivity(),"Please do the API settings first", 1).show(); } } catch(Exception e) { Toast.makeText(getActivity(),"Please do the settings first Exception", 1).show(); // uName.setText(""); // password.setText(""); } } public static SalesGraphFragment getSaleInstance() { return INSTANCE; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.sales_fragment, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if(!TestAccount.equals("TestAccount")) { GraphViewSeries exampleSeries = new GraphViewSeries(new GraphViewData[] { new GraphViewData(5, 2.0d) , new GraphViewData(4, 1.0d) , new GraphViewData(3, 3.0d) // another frequency , new GraphViewData(2, 2.0d) , new GraphViewData(1, 1.0d) , new GraphViewData(0, 6.0d) }); // graph with dynamically genereated horizontal and vertical labels GraphView graphView; graphView = new LineGraphView( getActivity() // context , "" // heading ); graphView.addSeries(exampleSeries); // data // LinearLayout layout = (LinearLayout) findViewById(R.id.graph1); // layout.addView(graphView); // graph with custom labels and drawBackground ((LineGraphView) graphView).setDrawBackground(true); // custom static labels // graphView.setHorizontalLabels(new String[] {"2 days ago", "yesterday", "today", "tomorrow"}); // graphView.setVerticalLabels(new String[] {"high", "middle", "low"}); //graphView.addSeries(exampleSeries); // data //graphView.setViewPort(2, 5); //graphView.setBackgroundColor(Color.WHITE); // graphView.set layout = (LinearLayout) view.findViewById(R.id.salesgraph); txt=(TextView) view.findViewById(R.id.salesamount); txt.setText(getData()); layout.addView(graphView); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO Add your menu entries here inflater.inflate(R.menu.optionmenus, menu); super.onCreateOptionsMenu(menu, inflater); } // Handle click events @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.aboutus: Intent aboutus=new Intent(getActivity(),AboutUs.class); startActivity(aboutus); return true; case R.id.settings: Intent settings=new Intent(getActivity(),SettingsActivity.class); startActivity(settings); return true; default: return super.onOptionsItemSelected(item); } } public String getData() { return strSales; } public void setSessionId(String sessionId) { this.sessionId=sessionId; } public class saleDetail extends AsyncTask<Void,Integer,Object> { ProgressBar progressBar; @Override protected Object doInBackground(Void... params) { try { if(sessionId==null) { sessionId=sales.login(url, apiUser, apipass); setSessionId(sessionId); } b=sales. getSaleInfo(sessionId,url); } catch (Exception e) { e.printStackTrace(); System.out.println("Getting Order Error:"+e.getMessage()); //customer_results=null; } //} return b; } @Override protected void onPreExecute() { order_dialog = ProgressDialog.show(getActivity(),"Getting Sales Information...", "Please wait while loading", true); } protected void onPostExecute(final Object object) { order_dialog.dismiss(); if(object!=null) { System.out.println("Dismiss Called"); Map<String, Double> mappedData=(Map)object; Double sales=mappedData.get("Total Sale"); double finalValue = Math.round( sales * 100.0 ) / 100.0; strSales=""+finalValue; txt.setText(finalValue+""); //setData(object); } else { Toast.makeText(getActivity(),"You Dont have our package", 10).show(); } } } public class GraphValue extends AsyncTask<Void,Integer,Object[]> { ProgressBar progressBar; @Override protected Object[] doInBackground(Void... params) { try { if(sessionId==null) { sessionId=sales.login(url, apiUser, apipass); setSessionId(sessionId); } objects=sales.getGraphValue(sessionId,url); } catch (Exception e) { e.printStackTrace(); System.out.println("Getting Order Error:"+e.getMessage()); //customer_results=null; } //} return objects; } @Override protected void onPreExecute() { // order_dialog = ProgressDialog.show(getActivity(),"Getting Sales Information...", "Please wait while loading", true); } protected void onPostExecute(final Object object[]) { // order_dialog.dismiss(); // System.out.println("Data length is:"+object.length); // System.out.println("Dismiss Called"); for(Object obj:object) { extractDate(obj); } } private void extractDate(Object obj) { // TODO Auto-generated method stub Map map=(Map)obj; System.out.println(map.get("getCreatedAt")); } } }
Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment_holder);
if (fragment instanceof MyFragment)
    ((MyFragment) fragment).myFragmentMethod();
        [your fragment class here] blabla =( [your fragment class here])getSupportFragmentManager()

 .findFragmentById(R.id.myfragment_id);

 blabla.method_x();
if(viewPager.getCurrentItem() == 1) //First fragment
{
     FragmentOne frag1 = (FragmentOne)viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
     frag1.edittext1.setText(phone);
}
else if(viewPager.getCurrentItem() == 2) //Second fragment
{
     FragmentTwo frag2 = (FragmentTwo)viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
     frag2.edittext2.setText(phone);
}