使用2个选项卡创建滑动视图时出错

时间:2015-10-03 15:52:52

标签: java android

我尝试创建滑动视图在android.Below中有两个标签栏是我的编码片段。

Tab.java

 public class Tab extends FragmentActivity {
        ViewPager Tab;
        TabPagerAdapter TabAdapter;
        ActionBar actionBar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            TabAdapter = new TabPagerAdapter(getSupportFragmentManager());


            Tab = (ViewPager)findViewById(R.id.pager);

            Tab.setOnPageChangeListener(
                    new ViewPager.SimpleOnPageChangeListener() {
                        @Override
                        public void onPageSelected(int position) {

                            actionBar = getActionBar();
                            actionBar.setSelectedNavigationItem(position);                    }
                    });

            Tab.setAdapter(TabAdapter);

            actionBar = getActionBar();

            //Enable Tabs on Action Bar
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            ActionBar.TabListener tabListener = new ActionBar.TabListener(){

                @Override
                public void onTabReselected(android.app.ActionBar.Tab tab,
                                            FragmentTransaction ft) {
                    // TODO Auto-generated method stub
                  //  Toast.makeText(getApplicationContext(), "Tab selected", 200).show();

                }

                @Override
                public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {

                    Tab.setCurrentItem(tab.getPosition());
                }

                @Override
                public void onTabUnselected(android.app.ActionBar.Tab tab,
                                            FragmentTransaction ft) {
                    // TODO Auto-generated method stub

                }};
            //Add New Tabs
            actionBar.addTab(actionBar.newTab().setText("Information").setTabListener(tabListener));
            actionBar.addTab(actionBar.newTab().setText("Work Force").setTabListener(tabListener));
            actionBar.addTab(actionBar.newTab().setText("Work Details").setTabListener(tabListener));

        }




    }

Information.java

import android.app.DatePickerDialog;
        import android.app.Dialog;
        import android.app.FragmentTransaction;
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.DatePicker;
        import android.widget.EditText;
        import android.widget.Spinner;
        import com.example.project.project.database.MyDatabaseHelper;
        import java.util.ArrayList;
        import java.util.Calendar;
        import java.util.List;

public class Information extends Fragment implements View.OnClickListener {
    private Spinner spinner, spinner2, spinner3;

    private MyDatabaseHelper dbHelper;
    private com.example.project.project.API.InfoAPI ts;
    private static EditText txtDate;
    private DateDialog dialog;
    private static String a;
    private static String b;
    private static String c;
    private static String date1;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View info = inflater.inflate(R.layout.information, container, false);
        dialog = new DateDialog();
        txtDate = (EditText) info.findViewById(R.id.editText5);
        txtDate.setOnClickListener(this);

        addItemsOnSpinner();
        addItemsOnSpinner2();
        addItemsOnSpinner3();
        return info;
    }


  public void onClick(View arg0) {
    FragmentTransaction ft =getActivity().getSupportFragmentManager().beginTransaction();
    dialog.show(ft, "DatePicker");

}


        public void addItemsOnSpinner() {
            spinner = (Spinner)getView().findViewById(R.id.spinner); 
            List<String> list = new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("3");

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);


        }

WorkDetailsTable.java

  import android.app.Dialog;
    import android.app.TimePickerDialog;
    import android.content.pm.ActivityInfo;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.text.format.DateFormat;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;
    import android.widget.TimePicker;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;

     public void onClick(View v) {
            int id = v.getId();
           if (id == R.id.editTextTI1) {
            tp.setFlag(TimePick.FLAG_START_DATE);
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            tp.show(ft, "TimePicker");
        }

我收到的错误如下:

Error:(294, 15) error: no suitable method found for show(android.support.v4.app.FragmentTransaction,String)
method DialogFragment.show(FragmentManager,String) is not applicable
(argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to FragmentManager)
method DialogFragment.show(android.app.FragmentTransaction,String) is not applicable
(argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to android.app.FragmentTransaction)

请帮助我..我已经厌倦了四处寻找..感谢:)。

2 个答案:

答案 0 :(得分:0)

错误“解析时达到文件结尾”可能会显示,因为您忘记关闭大括号: `}“

您真的发布了文件的完整代码吗?如果是这样,这肯定是你的问题。

我不知道您使用的是什么IDE,但我建议您使用AndroidStudio或Eclipse IDE。他们会立即向您显示编译时错误,以便您能够轻松修复它们。

对于ViewPager的使用,Android开发者提供了一些优秀的资源。我建议您稍微阅读一下:

http://developer.android.com/training/animation/screen-slide.html

还有一个示例应用程序供您下载

至于你的编辑:

getSupportFragmentManager()在Fragment类中不可用。所以你需要像这样调用它。

getActivity()。getSupportFragmentManager()

请多阅读一下android Fragments和Activitys以避免这些琐碎的错误。

答案 1 :(得分:0)

首先,您的代码看起来相当不完整,因此很难说出确切的问题。

现在,对于我能够看到的问题。

<强> Tab.java

  1. 我没有看到您的导入,所以我无法判断您是否正在导入正确的课程。据我所知,你正在使用支持库。
  2. 您似乎将支持ActionBar与原生支持混合在一起。您应该使用getSupportActionBar()
  3. 您似乎可以互换使用android.app.ActionBar.Tabandroid.support.v7.app.ActionBar.Tab。他们不是同一个野兽。你应该使用支持。
  4. <强> WorkDetailsTable.java

    你在那里缺少很多代码。那是完整的文件吗?

    Information.java WorkDetailsTable.java

    1. 您正在使用android.app.FragmentTransactiongetSupportFragmentManager.beginTransaction()返回android.support.v4.app.FragmentTransaction
    2. 您的对话框似乎是使用android.app.DialogFragment实现的。您可以使用android.supportv4.DialogFragment来实现它们。
    3. 错误记录

      您收到这些错误是因为您使用的是不兼容的类型。 android.app.FragmentTransactionandroid.support.v4.app.FragmentTransaction是不同的类型。