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;
}
}
}
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()
.
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.
Essayer
import Android.widget.ArrayAdapter;
Cela peut également résoudre le problème.