Java 类型不匹配无法将主活动转换为片段

Java 类型不匹配无法将主活动转换为片段,java,android,android-fragments,Java,Android,Android Fragments,我正在使用选项卡布局,但在尝试将选项卡与我的活动链接时出现错误。我对这一点很陌生,可能在这里使用了错误的术语,但我希望您理解我的意思 TabPagerAdapter.Java package com.learn2crack.tab; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePa

我正在使用选项卡布局,但在尝试将选项卡与我的活动链接时出现错误。我对这一点很陌生,可能在这里使用了错误的术语,但我希望您理解我的意思

TabPagerAdapter.Java

package com.learn2crack.tab;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;



public class TabPagerAdapter extends FragmentStatePagerAdapter {
    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }


    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            //Fragement for Android Tab
            return new MainActivity1();
        case 1:
           //Fragment for Ios Tab
            return new Maps();
       // case 2:
            //Fragment for Windows Tab
            //return new Scanner();
        }
        return null;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3; //No of Tabs
    }


    }
package com.learn2crack.tab;

import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;



     interface OnHeadlineSelectedListener {
         /** Called by HeadlinesFragment when a list item is selected */
         public void onArticleSelected(int position);
     }
     public class MainActivity1 extends FragmentActivity implements OnHeadlineSelectedListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rooms_view);

        // Check whether the activity is using the layout version with
        // the fragment_container FrameLayout. If so, we must add the first fragment
        if (findViewById(R.id.fragment_container) != null) {

            // However, if we're being restored from a previous state,
            // then we don't need to do anything and should return or else
            // we could end up with overlapping fragments.
            if (savedInstanceState != null) {
                return;
            }

            // Create an instance of ExampleFragment
            HeadlinesFragment firstFragment = new HeadlinesFragment();

            // In case this activity was started with special instructions from an Intent,
            // pass the Intent's extras to the fragment as arguments
            firstFragment.setArguments(getIntent().getExtras());

            // Add the fragment to the 'fragment_container' FrameLayout
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, firstFragment).commit();
        }
    }

    public void onArticleSelected(int position) {
        // The user selected the headline of an article from the HeadlinesFragment

        // Capture the article fragment from the activity layout
        ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.Software);

        if (articleFrag != null) {
            // If article frag is available, we're in two-pane layout...

            // Call a method in the ArticleFragment to update its content
            articleFrag.updateArticleView(position);

        } else {
            // If the frag is not available, we're in the one-pane layout and must swap frags...

            // Create fragment and give it an argument for the selected article
            ArticleFragment newFragment = new ArticleFragment();
            Bundle args = new Bundle();
            args.putInt(ArticleFragment.ARG_POSITION, position);
            newFragment.setArguments(args);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            // Replace whatever is in the fragment_container view with this fragment,
            // and add the transaction to the back stack so the user can navigate back
            transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();
        }
    }

    public class ArticleFragment extends Fragment {
        final static String ARG_POSITION = "position";
        int mCurrentPosition = -1;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {

            // If activity recreated (such as from screen rotate), restore
            // the previous article selection set by onSaveInstanceState().
            // This is primarily necessary when in the two-pane layout.
            if (savedInstanceState != null) {
                mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
            }

            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.sofware_view, container, false);
        }

        @Override
        public void onStart() {
            super.onStart();

            // During startup, check if there are arguments passed to the fragment.
            // onStart is a good place to do this because the layout has already been
            // applied to the fragment at this point so we can safely call the method
            // below that sets the article text.
            Bundle args = getArguments();
            if (args != null) {
                // Set article based on argument passed in
                updateArticleView(args.getInt(ARG_POSITION));
            } else if (mCurrentPosition != -1) {
                // Set article based on saved instance state defined during onCreateView
                updateArticleView(mCurrentPosition);
            }
        }

        public void updateArticleView(int position) {
            TextView article = (TextView) getActivity().findViewById(R.id.Software);
            article.setText(Rooms[position]);
            mCurrentPosition = position;
        }

        @Override
        public void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);

            // Save the current article selection in case we need to recreate the fragment
            outState.putInt(ARG_POSITION, mCurrentPosition);
        }
    }

    public class HeadlinesFragment extends ListFragment {
        OnHeadlineSelectedListener mCallback;




        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // We need to use a different list item layout for devices older than Honeycomb
            int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
                    android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;

            // Create an array adapter for the list view, using the Ipsum headlines array
            setListAdapter(new ArrayAdapter<String>(getActivity(), layout, Software));
        }

        @Override
        public void onStart() {
            super.onStart();

            // When in two-pane layout, set the listview to highlight the selected list item
            // (We do this during onStart because at the point the listview is available.)
            if (getFragmentManager().findFragmentById(R.id.Software) != null) {
                getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            }
        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);

            // This makes sure that the container activity has implemented
            // the callback interface. If not, it throws an exception.
            try {
                mCallback = (OnHeadlineSelectedListener) activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString()
                        + " must implement OnHeadlineSelectedListener");
            }
        }

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            // Notify the parent activity of selected item
            mCallback.onArticleSelected(position);

            // Set the item as checked to be highlighted when in two-pane layout
            getListView().setItemChecked(position, true);
        }
    }

    ArrayAdapter<String> adapter;




    static String Software[] = {
            "3D Studio Max 2014",
            "Adobe Creative Suite 6",
            "Agilent Agent",
            "Android SDK",
            "Audacity",
            "C Map Tools",
            "Cedar and Easy 68k",
            "Context",
            "CryEngine 3",
            "Derive V5.0",
            "Dreamweaver CS6",
            "Eclipse",
            "Face Modeller",
            "Flash CS6",
            "Image J",
            "Linux",
            "Matlab R2012A (Computing Toolbase)",
            "Matlab R2012A (Maths)",
            "Microsoft Project",
            "Microsoft SQL Sever Lite",
            "MinecraftEDU",
            "MiniTab 16",
            "MonoGame",
            "NetBeans 7.3.1",
            "Office 2013",
            "Oracle Client",
            "Photoshop CS6",
            "Premiere CS6",
            "Python 3.3.2",
            "QT 5.1",
            "R-Studio",
            "Rational Architect",
            "Steam",
            "SWI Pro Log",
            "Unreal UDK",
            "Visio 2012",
            "Visual Studio 2012",
            "Win A&D 7 Desktop",
            "Windows Mobile SDK",
            "Weka ML",
            "XNA Game Studio"};

   static  String Rooms []= { "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",




    };
}
MainActivity1.java

package com.learn2crack.tab;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;



public class TabPagerAdapter extends FragmentStatePagerAdapter {
    public TabPagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }


    @Override
    public Fragment getItem(int i) {
        switch (i) {
        case 0:
            //Fragement for Android Tab
            return new MainActivity1();
        case 1:
           //Fragment for Ios Tab
            return new Maps();
       // case 2:
            //Fragment for Windows Tab
            //return new Scanner();
        }
        return null;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 3; //No of Tabs
    }


    }
package com.learn2crack.tab;

import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;



     interface OnHeadlineSelectedListener {
         /** Called by HeadlinesFragment when a list item is selected */
         public void onArticleSelected(int position);
     }
     public class MainActivity1 extends FragmentActivity implements OnHeadlineSelectedListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rooms_view);

        // Check whether the activity is using the layout version with
        // the fragment_container FrameLayout. If so, we must add the first fragment
        if (findViewById(R.id.fragment_container) != null) {

            // However, if we're being restored from a previous state,
            // then we don't need to do anything and should return or else
            // we could end up with overlapping fragments.
            if (savedInstanceState != null) {
                return;
            }

            // Create an instance of ExampleFragment
            HeadlinesFragment firstFragment = new HeadlinesFragment();

            // In case this activity was started with special instructions from an Intent,
            // pass the Intent's extras to the fragment as arguments
            firstFragment.setArguments(getIntent().getExtras());

            // Add the fragment to the 'fragment_container' FrameLayout
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, firstFragment).commit();
        }
    }

    public void onArticleSelected(int position) {
        // The user selected the headline of an article from the HeadlinesFragment

        // Capture the article fragment from the activity layout
        ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.Software);

        if (articleFrag != null) {
            // If article frag is available, we're in two-pane layout...

            // Call a method in the ArticleFragment to update its content
            articleFrag.updateArticleView(position);

        } else {
            // If the frag is not available, we're in the one-pane layout and must swap frags...

            // Create fragment and give it an argument for the selected article
            ArticleFragment newFragment = new ArticleFragment();
            Bundle args = new Bundle();
            args.putInt(ArticleFragment.ARG_POSITION, position);
            newFragment.setArguments(args);
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            // Replace whatever is in the fragment_container view with this fragment,
            // and add the transaction to the back stack so the user can navigate back
            transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();
        }
    }

    public class ArticleFragment extends Fragment {
        final static String ARG_POSITION = "position";
        int mCurrentPosition = -1;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {

            // If activity recreated (such as from screen rotate), restore
            // the previous article selection set by onSaveInstanceState().
            // This is primarily necessary when in the two-pane layout.
            if (savedInstanceState != null) {
                mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
            }

            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.sofware_view, container, false);
        }

        @Override
        public void onStart() {
            super.onStart();

            // During startup, check if there are arguments passed to the fragment.
            // onStart is a good place to do this because the layout has already been
            // applied to the fragment at this point so we can safely call the method
            // below that sets the article text.
            Bundle args = getArguments();
            if (args != null) {
                // Set article based on argument passed in
                updateArticleView(args.getInt(ARG_POSITION));
            } else if (mCurrentPosition != -1) {
                // Set article based on saved instance state defined during onCreateView
                updateArticleView(mCurrentPosition);
            }
        }

        public void updateArticleView(int position) {
            TextView article = (TextView) getActivity().findViewById(R.id.Software);
            article.setText(Rooms[position]);
            mCurrentPosition = position;
        }

        @Override
        public void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);

            // Save the current article selection in case we need to recreate the fragment
            outState.putInt(ARG_POSITION, mCurrentPosition);
        }
    }

    public class HeadlinesFragment extends ListFragment {
        OnHeadlineSelectedListener mCallback;




        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // We need to use a different list item layout for devices older than Honeycomb
            int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
                    android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;

            // Create an array adapter for the list view, using the Ipsum headlines array
            setListAdapter(new ArrayAdapter<String>(getActivity(), layout, Software));
        }

        @Override
        public void onStart() {
            super.onStart();

            // When in two-pane layout, set the listview to highlight the selected list item
            // (We do this during onStart because at the point the listview is available.)
            if (getFragmentManager().findFragmentById(R.id.Software) != null) {
                getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            }
        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);

            // This makes sure that the container activity has implemented
            // the callback interface. If not, it throws an exception.
            try {
                mCallback = (OnHeadlineSelectedListener) activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString()
                        + " must implement OnHeadlineSelectedListener");
            }
        }

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            // Notify the parent activity of selected item
            mCallback.onArticleSelected(position);

            // Set the item as checked to be highlighted when in two-pane layout
            getListView().setItemChecked(position, true);
        }
    }

    ArrayAdapter<String> adapter;




    static String Software[] = {
            "3D Studio Max 2014",
            "Adobe Creative Suite 6",
            "Agilent Agent",
            "Android SDK",
            "Audacity",
            "C Map Tools",
            "Cedar and Easy 68k",
            "Context",
            "CryEngine 3",
            "Derive V5.0",
            "Dreamweaver CS6",
            "Eclipse",
            "Face Modeller",
            "Flash CS6",
            "Image J",
            "Linux",
            "Matlab R2012A (Computing Toolbase)",
            "Matlab R2012A (Maths)",
            "Microsoft Project",
            "Microsoft SQL Sever Lite",
            "MinecraftEDU",
            "MiniTab 16",
            "MonoGame",
            "NetBeans 7.3.1",
            "Office 2013",
            "Oracle Client",
            "Photoshop CS6",
            "Premiere CS6",
            "Python 3.3.2",
            "QT 5.1",
            "R-Studio",
            "Rational Architect",
            "Steam",
            "SWI Pro Log",
            "Unreal UDK",
            "Visio 2012",
            "Visual Studio 2012",
            "Win A&D 7 Desktop",
            "Windows Mobile SDK",
            "Weka ML",
            "XNA Game Studio"};

   static  String Rooms []= { "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",
            "MEA 27\n MEA 34\n",




    };
}
package com.learn2crack.tab;
导入android.app.Activity;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v4.app.ListFragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
HeadlineSelectedListener上的接口{
/**选择列表项时由HeadlinesFragment调用*/
所选部件上的公共无效(int位置);
}
公共类MainActivity1扩展了HeadlineSelectedListener上的FragmentActivity实现{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、房间视图);
//检查活动是否正在使用布局版本和
//fragment_容器FrameLayout。如果是这样,我们必须添加第一个片段
if(findviewbyd(R.id.fragment\u容器)!=null){
//但是如果我们从以前的状态恢复过来,
//那我们就什么都不用做了,应该回去或者别的
//我们最终可能会有重叠的碎片。
如果(savedInstanceState!=null){
返回;
}
//创建ExampleFragment的实例
HeadlinesFragment firstFragment=新的HeadlinesFragment();
//如果该活动是在有意向的特殊指示下开始的,
//将意图的额外内容作为参数传递给片段
setArguments(getIntent().getExtras());
//将片段添加到“片段容器”框架布局中
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_容器,firstFragment).commit();
}
}
所选部件上的公共无效(内部位置){
//用户从HeadlinesFragment中选择了一篇文章的标题
//从活动布局中捕获文章片段
ArticleFragment-ArticleFragm=(ArticleFragment)
getSupportFragmentManager().findFragmentById(R.id.Software);
if(articleFrag!=null){
//如果文章框架可用,我们将采用双窗格布局。。。
//调用ArticleFragment中的方法以更新其内容
articleFrag.updateArticleView(职位);
}否则{
//如果frag不可用,我们处于单窗格布局,必须交换frag。。。
//创建片段并为其指定所选文章的参数
ArticleFragment newFragment=新ArticleFragment();
Bundle args=新Bundle();
args.putInt(ArticleFragment.ARG_位置,位置);
setArguments(args);
FragmentTransaction=getSupportFragmentManager().beginTransaction();
//用这个片段替换fragment_容器视图中的任何内容,
//并将事务添加到后台堆栈中,以便用户可以导航回后台
事务.replace(R.id.fragment\u容器,newFragment);
transaction.addToBackStack(空);
//提交事务
commit();
}
}
公共类ArticleFragment扩展了片段{
最终静态字符串ARG_POSITION=“POSITION”;
int mCurrentPosition=-1;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//如果重新创建了活动(例如从屏幕旋转),则恢复
//onSaveInstanceState()设置的上一篇文章选择。
//在双窗格布局中,这主要是必需的。
如果(savedInstanceState!=null){
mCurrentPosition=savedInstanceState.getInt(ARG_位置);
}
//为该碎片膨胀布局
返回充气机。充气(右布局。软件视图,容器,假);
}
@凌驾
public void onStart(){
super.onStart();
//在启动期间,检查是否有参数传递给片段。
//onStart是这样做的一个好地方,因为布局已经完成
//此时应用于片段,以便我们可以安全地调用该方法
//下面是文章的文本。
Bundle args=getArguments();
如果(args!=null){
//基于传入的参数设置项目
updateArticleView(args.getInt(ARG_位置));
}否则如果(mCurrentPosition!=-1){
//根据onCreateView期间定义的已保存实例状态设置项目
updateArticleView(mCurrentPosition);
}
}
公共void updateArticleView(内部位置){
TextView article=(TextView)getActivity().findViewById(R.id.Software);
第条setText(房间[位置]);
mCurrentPosition=位置;
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
//保存当前文章选择,以防我们需要重新创建片段
超出状态putInt(ARG_位置,mCurrentPosition);
}
}
公共类标题