Ich habe eine Nullpointer-Ausnahme mit meinem Adapter in das Fragment ich benutze die Gridview. Wenn die App des Funkrufempfänger lädt das Fragment in die Registerkarte beginnen aber der Adapter sendet null und die App stopptProbleme mit Gridview in Fragment
Hier kann u meinen mainactivity sehen:
public class MainLayout extends AppCompatActivity {
ViewPager pager;
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_layout);
pager = (ViewPager) findViewById(R.id.view_pager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
// Fragment manager to add fragment in viewpager we will pass object of Fragment manager to adpater class.
FragmentManager manager = getSupportFragmentManager();
//object of com.example.babus.konektamos.PagerAdapter passing fragment manager object as a parameter of constructor of com.example.babus.konektamos.PagerAdapter class.
PagerAdapter adapter = new PagerAdapter(manager);
//set Adapter to view pager
pager.setAdapter(adapter);
//set tablayout with viewpager
tabLayout.setupWithViewPager(pager);
// adding functionality to tab and viewpager to manage each other when a page is changed or when a tab is selected
pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
//Setting tabs from adpater
tabLayout.setTabsFromPagerAdapter(adapter);
}
//inicio menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.tuto:
Intent i = new Intent(MainLayout.this, Tutorial.class);
finish();
startActivity(i);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//final menu
//modificamos el boton atras para que no nos devuelva al wizzard
@Override
public void onBackPressed(){
finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
Hier u meine Seite Adapter sehen:
public class PagerAdapter extends FragmentStatePagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment frag = null;
switch (position){
case 0:
frag = new OfertasFragment();
break;
case 1:
frag = new NegociosFragment();
break;
case 2:
frag = new TarjetaFragment();
break;
}
return frag;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
String title = " ";
switch (position){
case 0:
title = "Ofertas";
break;
case 1:
title = "Negocios";
break;
case 2:
title = "Tarjeta";
break;
}
return title;
}
}
Dies ist der XML des Fragments:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.babus.konektamos.OfertasFragment">
<!-- TODO: Update blank fragment layout -->
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="120dp"
android:horizontalSpacing="@dimen/espacio_grilla"
android:numColumns="2"
android:padding="@dimen/espacio_grilla"
android:verticalSpacing="@dimen/espacio_grilla" />
Und hier u mein Fragment sehen:
public class OfertasFragment extends Fragment implements AdapterView.OnItemClickListener{
private GridView gridView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//inicio gridview
gridView = (GridView) this.getActivity().findViewById(R.id.grid);
gridView.setAdapter(new AdaptadorDeCupones(this.getActivity()));
gridView.setOnItemClickListener(this);
//fin gridview
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_ofertas,container,false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
//Inicio detalle cupones
//@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
cupones item = (cupones) parent.getItemAtPosition(position);
Intent intent = new Intent(this.getActivity(), ActividadDetalle.class);
intent.putExtra(ActividadDetalle.EXTRA_PARAM_ID, item.getId());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat activityOptions =
ActivityOptionsCompat.makeSceneTransitionAnimation(
this.getActivity(),
new Pair<View, String>(view.findViewById(R.id.imagen_cupon),
ActividadDetalle.VIEW_NAME_HEADER_IMAGE)
);
ActivityCompat.startActivity(this.getActivity(), intent, activityOptions.toBundle());
} else
startActivity(intent);
}
//final detalle cupones
}
Vielen Dank, es hat funktioniert. – Mihawk
Willkommen immer .. – mdDroid