- Forum-Beiträge: 3
15.03.2020, 21:40:08 via Website
15.03.2020 21:40:08 via Website
Hallo liebes AndroidPIT-Forum,
ich bin gerade dabei, ein Unterrichtsprojekt (BinarySearchTree) in eine App umzuwandeln. Durch die verlängerten Ferien habe ich dazu auch Zeit.
Mein Problem:
Ich benutze einen ViewPager (CollectionPagerAdapter), der meine Fragmente (fGrafik, fVerwaltung und fAusgabe) verwaltet. Wenn ich das Projekt erstelle erscheint wie gewünscht in dem Fragment fAusgabe ein TextView mit dem Inhalt "Konsole\n\n". Wenn ich dann aber diesen Text verändern möchte (z.B. mit dem append-Befehl) bekomme ich eine NullPointerException.
Kann mir jemand weiterhelfen?
Start.java
public class Start extends AppCompatActivity{
CollectionPagerAdapter collectionPagerAdapter;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
collectionPagerAdapter = new CollectionPagerAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(collectionPagerAdapter);
final ActionBar actionBar = getSupportActionBar();
[...]
this.ausgabe("Ausgabe 1");
}
public void ausgabeLoeschen(){
((TextView)this.collectionPagerAdapter.gibFAusgabe().getView().findViewById(R.id.konsole)).setText("Konsole:\n\n");
}
public void ausgabe(String pInhalt){
((TextView)this.collectionPagerAdapter.gibFAusgabe().getView().findViewById(R.id.konsole)).append(pInhalt);
}
}
start.xml
<FrameLayout
xmlns:android="ht tp://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container">
<android.support.v4.view.ViewPager xmlns:android="ht tp://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager></FrameLayout>
CollectionPagerAdapter.java
public class CollectionPagerAdapter extends FragmentStatePagerAdapter{
private GrafikFragment fGrafik;
private VerwaltungFragment fVerwaltung;
private AusgabeFragment fAusgabe;
public CollectionPagerAdapter(FragmentManager pFM){
super(pFM);
fGrafik = new GrafikFragment();
fVerwaltung = new VerwaltungFragment();
fAusgabe = new AusgabeFragment();
}
@Override
public Fragment getItem(int i){
Fragment fragment = null;
Bundle args = new Bundle();
switch (i){
case 0:
fragment = fGrafik;
args.putInt(GrafikFragment.ARG, i+1);
break;
case 1:
fragment = fVerwaltung;
args.putInt(VerwaltungFragment.ARG, i+1);
break;
case 2:
fragment = fAusgabe;
args.putInt(AusgabeFragment.ARG, i+1);
break;
}
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount(){
return 3;
}
@Override
public CharSequence getPageTitle(int position){
switch(position){
case 0:
return "Grafik";
case 1:
return "Verwaltung";
case 2:
return "Ausgabe";
}
return "";
}
public GrafikFragment gibFGrafik(){
return fGrafik;
}
public VerwaltungFragment gibFVerwaltung(){
return fVerwaltung;
}
public AusgabeFragment gibFAusgabe(){
return fAusgabe;
}}
AusgabeFragment.java
public class AusgabeFragment extends Fragment{
public static final String ARG = "parameter";
private View root;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
root = inflater.inflate(R.layout.fragment_ausgabe, container, false);
Bundle args = getArguments();
String param = "Konsole:\n\n";
((TextView) root.findViewById(R.id.konsole)).setText(param);
return root;
}}
fragment_ausgabe.xml
<FrameLayout xmlns:android="ht tp://schemas.android.com/apk/res/android"
xmlns:tools="ht tp://schemas.android.com/tools"
android:id="@+id/collectionAusgabe"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AusgabeFragment">
<TextView
android:id="@+id/konsole"
android:layout_width="match_parent"
android:layout_height="match_parent"/></FrameLayout>
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.