Beim Debuggen kommt ab der TableSetting Klasse
Cannot find local variable 'shadow$_klass_'
hat das was zu bedeuten
Beim Debuggen kommt ab der TableSetting Klasse
Cannot find local variable 'shadow$_klass_'
hat das was zu bedeuten
Hat leider nichts geholfen
liegts vielleicht am XML text?
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
also ohne v geht nicht da wirds rot
warum nicht in dieser Zeile?
bin erst Anfänger in der Android programmierung, habs halt so gedacht, deshalb in der Zeile
außerdem hab ich das bei den anderen Fragments auch so gemacht
Deine Annahme das er erst beim zweiten Aufruf weiß(bzw. leer ist) ist richtig
wenn ichs in d Main aufrufe wirds beim zweitem Mal auch wieder weiß
Er bleibt in TableSetting in OnCreateView hängen dort holt er sich den Viewpager per Id und bekommt null als Rückgabewert
private void makeTable(RelativeLayout rela, int anzahlTische, final View v) {
// int anzahlTische =3 Toast.makeText(Setting.this, "Click table"+tableend, Toast.LENGTH_SHORT).show();
Toast.makeText(v.getContext(), "Click anzahlTische" + anzahlTische, Toast.LENGTH_SHORT).show();
myTischArray = new Tisch[anzahlTische];
for (int i = 0; i < anzahlTische; i++) {
/*Neue mit Zeit*/
// myTischArray[i] = new Tisch(v.getContext(), i,mListener.getPracticeTimeforPlayground());
myTischArray[i] = new Tisch(v.getContext(), i);
myTischArray[i].startTableTimer(45, myTischArray[i]);
myTischArray[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tableSetting(v);
}
});
// Toast.makeText(v.getContext(), " vor add relaClick I "+i, Toast.LENGTH_SHORT).show();
rela.addView(myTischArray[i]);
// Toast.makeText(v.getContext(), "nach add rela "+i, Toast.LENGTH_SHORT).show();
}
}
/*** Listener mit Klick auf Platte*/
private void tableSetting(View v) {
int buttonId = v.getId();
Toast.makeText(v.getContext(), "Table Button Test" + buttonId + "", Toast.LENGTH_SHORT).show();
mListener.startTableSettingPlay(buttonId);
// mListener.startTableSettingPlay(tablesettingarray[test],test);
}
Alles anzeigen
/*Zeigt das Spielfeld mit Tischen an*/
public void startPlayground() {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frameLayout, playground);
fragmentTransaction.commit();
getSupportActionBar().setTitle("Halle");
}
/**Vorläufige Table Setting aktivierung*/
public void startTableSetting(int buttonId) {
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frameLayout, TableSetting.newInstance(buttonId));
fragmentTransaction.commit();
getSupportActionBar().setTitle("Uebung");
}
Alles anzeigen
Playground definiert die Buttons und die zugehörigen Listener.
Klick auf Button führt zu TableSetting Klasse(Fragment) die hat ein ViewPager als XML Layout,
im ViewPager ist OneFragment
OneFragment hat Button führt wieder zu Playground
Im Playground klick auf Buttons -> weiße Seite: Und nicht wie erwartet TableSettingKlasse mit OneFragment
Die Klassen ruf ich jeweils in der Main auf, dies mach ich mit Interfaces
public class TableSetting extends Fragment {
ViewPager mPager;
//MyPageAdapter pageAdapter;
public TableSettingInterfaceListener mListener;
public MyPageAdapter test;
public TableFragmentOne frago;
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
public static int buttonId = 0;
/* public static final TableSetting newInstance(String message)
{
TableSetting f = new TableSetting();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
f.setArguments(bdl);
return f;
}*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public static TableSetting newInstance(int param1) {
TableSetting fragment = new TableSetting();
Bundle args = new Bundle(0);
args.putInt(String.valueOf(buttonId), param1);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tablesetting, container, false);
mPager = (ViewPager) v.findViewById(R.id.pager);
MyPageAdapter pageAdapter;
List<Fragment> fragments = getFragments(buttonId);
pageAdapter = new MyPageAdapter(mListener.getManager(), fragments);
mPager.setAdapter(pageAdapter);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Toast.makeText(getView().getContext(), "in on Actitivycreated", Toast.LENGTH_SHORT).show();
if (mListener != null) {
Toast.makeText(getView().getContext(), "vor Adapter", Toast.LENGTH_SHORT).show();
/*pageAdapter = new MyPageAdapter[4];
List<Fragment> fragments = getFragments();
for (int k = 0; k < 4; k++) {
pageAdapter[k] = new MyPageAdapter(getSupportFragmentManager(), fragments);
}
/* MyPageAdapter pageAdapter;
List<Fragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(mListener.getManager(), fragments);
mPager.setAdapter(pageAdapter);*/
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof TableSetting.TableSettingInterfaceListener) {
mListener = (TableSetting.TableSettingInterfaceListener) context;
} else {
throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener");
}
}
public void firstTest() {
this.goBackToTableSetting();
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public void goBackToTableSetting() {
mListener.goBack();
}
private List<Fragment> getFragments(int buttonId) {
List<Fragment> fList = new ArrayList<Fragment>();
fList.add(TableFragmentOne.newInstance("Fragment 1",buttonId));
fList.add(TableFragmentTwo.newInstance("Fragment 2", "test"));
//fList.add(new TableFragmentOne());
//fList.add(new TableFragmentTwo());
return fList;
}
/*Getter und Setter*/
public ViewPager getmPager() {
return mPager;
}
public void setmPager(ViewPager mPager) {
this.mPager = mPager;
}
public interface TableSettingInterfaceListener {
// MyPageAdapter getTableSetting(int id);
void goBack();
FragmentManager getManager();
}
}
/**MyPageAdapter für die Klasse**/
class MyPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
Alles anzeigen
Hallo Android Developers
ich habe ein Problem mit meiner App.
In einem Fragment sind mehrere Button dynamisch erzeugt worden, durch das klicken auf einen dieser Button wird
ein Fragment geöffnet werden in dem sich ein Viewpager befindet.
In dem Viewpager sind Erneut 2. Fragments mittels Adapter drin.
Im ersten Fragment kann man was mit einem Spinner einstellen, durch einen Button, gelangt man wieder in das Fragment mit den vielen Buttons, nun soll dr Button auf den geklickt worden ist den Spinner text anzeigen.
Nun zum eigentlichen Problem, klickt man nun erneut auf einen Button im Fragment mit den vielen Button, wird nur eine leere weiße Seite angezeigt.
Klasse Playground: Dort befinden sich die vielen Buttons.
Klasse Tisch: playground erzeugt Buttons von Tisch
(Tisch extends Button)
Klasse: Table Setting: Wird aufgerufen wenn man auf Button klickt
Klasse: TableFragmentOne : ISt Fragment im ViewPager
public class TableFragmentOne extends Fragment {
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
private int practiceTime;
private String practiceText;
private OneInterfaceListener mListener;
private int butId;
public TableFragmentOne() {
}
@Override
public void onAttachFragment(Fragment childFragment) {
super.onAttachFragment(childFragment);
}
public static final TableFragmentOne newInstance(String message, int buttonId) {
TableFragmentOne f = new TableFragmentOne();
Bundle bdl = new Bundle(1);
bdl.putString(EXTRA_MESSAGE, message);
f.setArguments(bdl);
f.butId = buttonId;
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tablefragmentone, container, false);
createPracticeSpinner(v);
createTimeSpinner2(v);
Toast.makeText(v.getContext(), "One", Toast.LENGTH_SHORT).show();
createPracticeButton(v);
return v;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof TableFragmentOne.OneInterfaceListener) {
mListener = (TableFragmentOne.OneInterfaceListener) context;
} else {
throw new RuntimeException(context.toString() + " must implement OnFragmentInteractionListener");
}
}
/**
* Spinner Die Text Angaben der Übungen
***/
private void createPracticeSpinner(View v) {
final Spinner textSpinner = (Spinner) v.findViewById(R.id.practiceSpinner);
ArrayAdapter<CharSequence> textAdapter;
boolean b = mListener.getBeginnerBool();
boolean a = mListener.getAdvancedBool();
if (b == true && a == false) {
textAdapter = ArrayAdapter.createFromResource(v.getContext(), R.array.practicebeginner, android.R.layout.simple_spinner_item);
}
if (a == true && b == false) {
textAdapter = ArrayAdapter.createFromResource(v.getContext(), R.array.practiceadvanced, android.R.layout.simple_spinner_item);
}else{
textAdapter = ArrayAdapter.createFromResource(v.getContext(), R.array.practiceboth, android.R.layout.simple_spinner_item);
}
textSpinner.setAdapter(textAdapter);
textSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
setPracticeText((String) parent.getItemAtPosition(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
/**
* Spinner für die Zeit der Übungen
*/
private void createTimeSpinner2(View v) {
final Spinner timeSpinner = (Spinner) v.findViewById(R.id.timeSpinner);
ArrayAdapter<CharSequence> timeAdapter = ArrayAdapter.createFromResource(v.getContext(), R.array.timepractice, android.R.layout.simple_spinner_item);
timeSpinner.setAdapter(timeAdapter);
timeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
setPraticeTime(Integer.valueOf((String) parent.getItemAtPosition(position)));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
/*Übungs starter Button*/
private void createPracticeButton(View v) {
Toast.makeText(v.getContext(), "Button One", Toast.LENGTH_SHORT).show();
final Button trainButton = (Button) v.findViewById(R.id.practiceButton);
Toast.makeText(v.getContext(), "Danach Button One", Toast.LENGTH_SHORT).show();
trainButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Lets go!!", Toast.LENGTH_SHORT).show();
goBackToPlayground(v);
}
});
}
/***Button Listener der die Übung starten soll***/
private void goBackToPlayground(View v) {
Toast.makeText(v.getContext(), "Back Test", Toast.LENGTH_SHORT).show();
/*Daten von ÜbungsSpinner und vom TimeSpinner müssen gespeichert und übergeben werden*/
/*ÜbungsSpinner TableFragmentTwo*/
/*Timespinner an Playground*/
mListener.practiceSetting(getPracticeTime(), getPracticeText(), butId);
/*Funktion die über das Interface zum Playground wechselt**/
mListener.startEndlichMal();
}
/*Spinner Listener*/
private void setPracticeText(String practiceText) {
this.practiceText = practiceText;
}
private void setPraticeTime(Integer integer) {
this.practiceTime = integer;
}
/**
* Getter und Setter
*/
public String getPracticeText() {
return practiceText;
}
public int getPracticeTime() {
return practiceTime;
}
/*Interface**/
public interface OneInterfaceListener {
// TODO: Update argument type and name
void startEndlichMal();
void practiceSetting(int practiceTime, String practiceText, int buttonId);
// Intent getInterfaceI();
Boolean getBeginnerBool();
Boolean getAdvancedBool();
}
}
Alles anzeigen