getSupportFragmentManager()是未定义 [英] getSupportFragmentManager() is undefined

查看:338
本文介绍了getSupportFragmentManager()是未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到以下错误: 的方法getSupportFragmentManager()是未定义的类型新View.OnClickListener(){}在我的片段文件显示下文。

我通过ABS和到位的正确进口引用兼容性库。我重新安装了ABS库瓦特/兼容性库,清理项目,重新启动Eclipse的,但没有奏效。

从本质上讲,我试图让该片段通过对话片段,显示日期选择器。一旦日期拾取,必须返回到片段,因此它可以用于计算基于该日期信息。

这里的code我的片段:

 包com.owentech.abstabsviewpager;

进口android.app.Activity;
进口android.app.Dialog;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.view.ViewGroup;
进口android.widget.Button;
进口android.widget.Toast;
进口android.support.v4.app.DialogFragment;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentPagerAdapter;
进口android.support.v4.app.FragmentActivity;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentTransaction;
进口com.actionbarsherlock.app.SherlockFragment;

公共类ObstetricsFragment1扩展SherlockFragment {

@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
        捆绑savedInstanceState)
{
    //片段布局
    查看查看= inflater.inflate(R.layout.obstetricsfragment1,集装箱,假);

    按钮mPickLMPDate =(按钮)view.findViewById(R.id.pickLMPDate);

    mPickLMPDate.setOnClickListener(新OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            LMPDatePickerDialogFragment D = LMPDatePickerDialogFragment.newInstance();
            d.show(getSupportFragmentManager(),对话);
        }

    });

    返回查看;
}

公共对话onCreateDialog(包savedInstanceState){
    // TODO自动生成方法存根
    返回null;
}

}
 

这里的code的对话片段:

 包com.owentech.abstabsviewpager;

进口android.app.Dialog;
进口android.os.Bundle;
进口android.widget.DatePicker;
进口android.app.DatePickerDialog;

公共类LMPDatePickerDialogFragment扩展ObstetricsFragment1实现DatePickerDialog.OnDateSetListener {

静态LMPDatePickerDialogFragment的newInstance(){
    LMPDatePickerDialogFragment D =新LMPDatePickerDialogFragment();
    返回D组;
}

私人诠释mLMPYear;
私人诠释mLMPMonth;
私人诠释mLMPDay;

公共对话onCreateDialog(包savedInstanceState){
    返回新DatePickerDialog(getActivity(),这一点,mLMPYear,mLMPMonth,mLMPDay);
}

公共无效onDateSet(DatePicker的观点,年整型,INT月,日整型){
    mLMPYear =年;
    mLMPMonth =月;
    mLMPDay =天;
}
}
 

最后,这里的code代表我的活动:

 包com.owentech.abstabsviewpager;

进口的java.util.ArrayList;
进口android.content.Context;
进口android.content.Intent;
进口android.net.Uri;
进口android.os.Bundle;
进口com.actionbarsherlock.view.Menu;
进口com.actionbarsherlock.view.MenuInflater;
进口android.widget.TextView;
进口com.actionbarsherlock.app.ActionBar;
进口com.actionbarsherlock.app.SherlockFragmentActivity;
进口com.actionbarsherlock.app.ActionBar.Tab;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentPagerAdapter;
进口android.support.v4.app.FragmentTransaction;
进口android.support.v4.app.Fragment;
进口android.support.v4.view.ViewPager;


公共类妇产科扩展SherlockFragmentActivity
{
ViewPager mViewPager;
TabsAdapter mTab​​sAdapter;
TextView的tabCenter;
TextView的tabText;

//开始操作栏菜单项
@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
   MenuInflater充气= getSupportMenuInflater();
   inflater.inflate(R.menu.main_menu,菜单);
   返回super.onCreateOptionsMenu(菜单);
}

@覆盖
公共布尔onOptionsItemSelected(com.actionbarsherlock.view.MenuItem项目){
    开关(item.getItemId()){
    案例R.id.menuLog:
        更新日志CL =新的更新日志(本);
        cl.getFullLogDialog()显示()。
        返回true;
    案例R.id.menuEmail:
        意图emailIntent =新的意图(Intent.ACTION_VIEW,Uri.parse(电子邮件地址:support@medicaldoctorapps.com));
        startActivity(emailIntent);
        返回true;
    案例R.id.menuRate:
        意图browserIntent =新的意图(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=appinventor.ai_shawn_m_gee.MedicalDoctor"));
        startActivity(browserIntent);
        返回true;
    案例android.R.id.home:
        //在操作栏中的应用程序图标点击;回家
        意向意图=新的意图(这一点,Home.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(意向);
        返回true;
    案例R.id.menuExit:
        this.finish();
        返回true;
    默认:
        返回super.onOptionsItemSelected(项目);
    }
}
// END操作栏菜单项

//启动选项卡查看传呼机(加入mTabsAdapter.addTab添加标签)
@覆盖
公共无效的onCreate(包savedInstanceState)
{

    //要返回到您的应用程序,通过的onCreate(),如果活动被破坏并重新启动由于某种隐含的原因信息
    super.onCreate(savedInstanceState);

    mViewPager =新ViewPager(本);
    mViewPager.setId(R.id.pager);

    的setContentView(mViewPager);
    动作条酒吧= getSupportActionBar();
    bar.setDisplayHomeAsUpEnabled(真正的);
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    mTabsAdapter =新TabsAdapter(这一点,mViewPager);

    mTabsAdapter.addTab(
            bar.newTab()的setText(轮),
            ObstetricsFragment1.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(物理),
            HistoryPhysicalFragment2.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(ROS),
            HistoryPhysicalFragment3.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()的setText(笼),
            HistoryPhysicalFragment4.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(SIGECAPS),
            HistoryPhysicalFragment5.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(格拉斯哥),
            HistoryPhysicalFragment6.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(神经),
            HistoryPhysicalFragment7.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(Dermat),
            HistoryPhysicalFragment8.class,NULL);
    mTabsAdapter.addTab(
            bar.newTab()。的setText(Minicog),
            HistoryPhysicalFragment9.class,NULL);
}

公共静态类TabsAdapter扩展FragmentPagerAdapter工具
        ActionBar.TabListener,ViewPager.OnPageChangeListener
{
    私人最终语境mContext;
    私人最终动作条mActionBar;
    私人最终ViewPager mViewPager;
    私人最终的ArrayList< TabInfo> mTabs =新的ArrayList< TabInfo>();

    静态final类TabInfo
    {
        私人最终类别<> CLSS;
        私人最终捆绑的args;

        TabInfo(类<> _class,捆绑_args)
        {
            CLSS = _class;
            的args = _args;
        }
    }

    公共TabsAdapter(SherlockFragmentActivity活动,ViewPager寻呼机)
    {
        超级(activity.getSupportFragmentManager());
        mContext =活动;
        mActionBar = activity.getSupportActionBar();
        mViewPager =寻呼机;
        mViewPager.setAdapter(本);
        mViewPager.setOnPageChangeListener(本);
    }

    公共无效addTab(ActionBar.Tab选项卡,类<> CLSS,捆绑参数)
    {
        TabInfo信息=新TabInfo(CLSS,参数);
        tab.setTag(信息);
        tab.setTabListener(本);
        mTabs.add(信息);
        mActionBar.addTab(标签);
        notifyDataSetChanged();
    }

    @覆盖
    公众诠释getCount将()
    {
        返回mTabs.size();
    }

    @覆盖
    公共片段的getItem(INT位置)
    {
        TabInfo信息= mTab​​s.get(位置);
        返回Fragment.instantiate(mContext,info.clss.getName(),
                info.args);
    }

    公共无效onPageScrolled(INT位置,浮positionOffset,
            INT positionOffsetPixels)
    {
    }

    公共无效onPageSelected(INT位置)
    {
        mActionBar.setSelectedNavigationItem(位置);
    }

    公共无效onPageScrollStateChanged(INT状态)
    {
    }

    公共无效onTabSelected(TAB键,FragmentTransaction英尺)
    {
        对象标记= tab.getTag();
        的for(int i = 0; I< mTab​​s.size();我++)
        {
            如果(mTabs.get(ⅰ)==标签)
            {
                mViewPager.setCurrentItem(ⅰ);
            }
        }
    }

    公共无效onTabUnselected(TAB键,FragmentTransaction英尺)
    {
    }

    公共无效onTabReselected(TAB键,FragmentTransaction英尺)
    {
    }
}
// END标签查看传呼机

}
 

解决方案

你会得到通过调用该对话框延长FragmentActivity活动摆脱这个问题

 公共类ObstetricsFragment1扩展FragmentActivity {
 

这是固有的支持库,如 DIALOG SPECS 看到和的支持库SPECS

I'm getting the following error: "The method getSupportFragmentManager() is undefined for the type new View.OnClickListener(){}" in my fragment file shown below.

I have the compatibility library referenced through ABS and the proper imports in place. I reinstalled ABS library w/ the compatibility library, cleaned the project, restarted Eclipse, but nothing has worked.

Essentially, I'm trying to get the fragment to show a date picker through a dialog fragment. Once the date is picked, it must be returned to the fragment so it can be used to calculate information based on that date.

Here's the code for my Fragment:

package com.owentech.abstabsviewpager;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import com.actionbarsherlock.app.SherlockFragment;

public class ObstetricsFragment1 extends SherlockFragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    //Fragment Layout
    View view = inflater.inflate(R.layout.obstetricsfragment1, container, false);

    Button mPickLMPDate = (Button) view.findViewById(R.id.pickLMPDate);

    mPickLMPDate.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            LMPDatePickerDialogFragment d = LMPDatePickerDialogFragment.newInstance();
            d.show(getSupportFragmentManager(), "dialog");
        }

    });

    return view;
}

public Dialog onCreateDialog(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    return null;
}

}

Here's the code for the Dialog Fragment:

package com.owentech.abstabsviewpager;

import android.app.Dialog;
import android.os.Bundle;
import android.widget.DatePicker;
import android.app.DatePickerDialog;

public class LMPDatePickerDialogFragment extends ObstetricsFragment1 implements DatePickerDialog.OnDateSetListener {

static LMPDatePickerDialogFragment newInstance() {
    LMPDatePickerDialogFragment d = new LMPDatePickerDialogFragment();
    return d;
}

private int mLMPYear;
private int mLMPMonth;
private int mLMPDay;

public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new DatePickerDialog(getActivity(), this, mLMPYear, mLMPMonth, mLMPDay);
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    mLMPYear = year;
    mLMPMonth = month;
    mLMPDay = day;
}
}

Finally, here's the code for the my activity:

package com.owentech.abstabsviewpager;

import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import android.widget.TextView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.app.ActionBar.Tab;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;


public class Obstetrics extends SherlockFragmentActivity
{
ViewPager mViewPager;
TabsAdapter mTabsAdapter;
TextView tabCenter;
TextView tabText;

// START Action Bar Menu Items  
@Override
public boolean onCreateOptionsMenu(Menu menu) {
   MenuInflater inflater = getSupportMenuInflater();
   inflater.inflate(R.menu.main_menu, menu);
   return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
    switch (item.getItemId()){
    case R.id.menuLog:
        ChangeLog cl = new ChangeLog(this);
        cl.getFullLogDialog().show();
        return true;
    case R.id.menuEmail:
        Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:support@medicaldoctorapps.com"));
        startActivity(emailIntent);
        return true;
    case R.id.menuRate:
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=appinventor.ai_shawn_m_gee.MedicalDoctor"));
        startActivity(browserIntent);
        return true;
    case android.R.id.home:
        // App icon in action bar clicked; go home
        Intent intent = new Intent(this, Home.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        return true;
    case R.id.menuExit:
        this.finish();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}      
//END Action Bar Menu Items

// START Tabs View Pager (Add tabs by adding mTabsAdapter.addTab)   
@Override
public void onCreate(Bundle savedInstanceState)
{

    // Information you want returned to your application, via onCreate(), if the activity is destroyed and restarted due to some implicit reason        
    super.onCreate(savedInstanceState);

    mViewPager = new ViewPager(this);
    mViewPager.setId(R.id.pager);

    setContentView(mViewPager);
    ActionBar bar = getSupportActionBar();
    bar.setDisplayHomeAsUpEnabled(true);
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    mTabsAdapter = new TabsAdapter(this, mViewPager);

    mTabsAdapter.addTab(
            bar.newTab().setText("Wheel"),
            ObstetricsFragment1.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Physical"),
            HistoryPhysicalFragment2.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("ROS"),
            HistoryPhysicalFragment3.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("CAGE"),
            HistoryPhysicalFragment4.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("SIGECAPS"),
            HistoryPhysicalFragment5.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Glasgow"),
            HistoryPhysicalFragment6.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Neuro"),
            HistoryPhysicalFragment7.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Dermat"),
            HistoryPhysicalFragment8.class, null);
    mTabsAdapter.addTab(
            bar.newTab().setText("Minicog"),
            HistoryPhysicalFragment9.class, null);
}

public static class TabsAdapter extends FragmentPagerAdapter implements
        ActionBar.TabListener, ViewPager.OnPageChangeListener
{
    private final Context mContext;
    private final ActionBar mActionBar;
    private final ViewPager mViewPager;
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

    static final class TabInfo
    {
        private final Class<?> clss;
        private final Bundle args;

        TabInfo(Class<?> _class, Bundle _args)
        {
            clss = _class;
            args = _args;
        }
    }

    public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager)
    {
        super(activity.getSupportFragmentManager());
        mContext = activity;
        mActionBar = activity.getSupportActionBar();
        mViewPager = pager;
        mViewPager.setAdapter(this);
        mViewPager.setOnPageChangeListener(this);
    }

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args)
    {
        TabInfo info = new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        mTabs.add(info);
        mActionBar.addTab(tab);
        notifyDataSetChanged();
    }

    @Override
    public int getCount()
    {
        return mTabs.size();
    }

    @Override
    public Fragment getItem(int position)
    {
        TabInfo info = mTabs.get(position);
        return Fragment.instantiate(mContext, info.clss.getName(),
                info.args);
    }

    public void onPageScrolled(int position, float positionOffset,
            int positionOffsetPixels)
    {
    }

    public void onPageSelected(int position)
    {
        mActionBar.setSelectedNavigationItem(position);
    }

    public void onPageScrollStateChanged(int state)
    {
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft)
    {
        Object tag = tab.getTag();
        for (int i = 0; i < mTabs.size(); i++)
        {
            if (mTabs.get(i) == tag)
            {
                mViewPager.setCurrentItem(i);
            }
        }
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft)
    {
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft)
    {
    }
}
// END Tabs View Pager

}

解决方案

you will get rid of this problem by making the activity that calls the dialog extend FragmentActivity

public class ObstetricsFragment1 extends FragmentActivity{

this is inherent to the support library, as seen in DIALOG SPECS and SUPPORT LIBRARY SPECS

这篇关于getSupportFragmentManager()是未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆