web-dev-qa-db-fra.com

Impossible de résoudre le constructeur ArrayAdapter

Salut les gars, j'obtiens un Impossible de résoudre le constructeur ArrayAdapter dans ma méthode OnCreateView avec le listAdapter J'essaie de répertorier les données de texte dans mes onglets et voici mon activité principale . Toute aide sera appréciée Je suis toujours un noobie dans Java.

public class MainActivity extends ActionBarActivity {

    private Toolbar toolbar;
    private ViewPager mPager;
    private SlidingTabLayout mTabs;

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

        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);

        mPager= (ViewPager) findViewById(R.id.viewPager);
        mTabs=(SlidingTabLayout) findViewById(R.id.tabs);
        mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
        mTabs.setDistributeEvenly(true);
        mTabs.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        mTabs.setSelectedIndicatorColors(getResources().getColor(R.color.colorAccent));
        mTabs.setViewPager(mPager);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    class MyPagerAdapter extends FragmentPagerAdapter {

        String[] tabs;

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
            tabs=getResources().getStringArray(R.array.tabs);
        }

        @Override
        public Fragment getItem(int position) {

            MyFragment myFragment=MyFragment.getInstance(position);
            return myFragment;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }

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

    public static class MyFragment extends Fragment {

        private TextView textView;
        private ListView mainListView;
        private ArrayAdapter<String> listAdapter ;

        public static MyFragment getInstance(int position){

            MyFragment myFragment=new MyFragment();
            Bundle  args=new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }

        @Override

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

            View layout=inflater.inflate(R.layout.fragment_my, container, false);

            mainListView=(ListView) layout.findViewById(R.id.position);

            String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
                    "Jupiter", "Saturn", "Uranus", "Neptune"};
            ArrayList<String> planetList = new ArrayList<String>();
            planetList.addAll( Arrays.asList(planets) );

            listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);
            mainListView.setAdapter( listAdapter );
            return layout;
        }
    }
}
12
Jacques Krause

Changement

 listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);

à

 listAdapter = new ArrayAdapter<String>(getActivity(), R.layout.simplerow, planetList);

Vous pouvez obtenir Context dans Fragment en utilisant getActivity().

64
M D

Remplacez this par activityName.this Changement

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, planetList);

avec

listAdapter = new ArrayAdapter<String>(activityName.this, R.layout.simplerow, planetList);

Cela a résolu pour moi l'utilisation dans asyncTask.

14
NomanJaved

Essayer

import Android.widget.ArrayAdapter;

Cela peut également résoudre le problème.

3
Souvik Dutta