Hallo zusammen, ich hätte eine (vermutlich) Anfänger-Frage.
Ich Habe eine App mit einer Activity (Main). Diese Activity hat ein Burgermenü mit dem man auf die 2 weitere Seiten kommt und auch wieder zurück.
In der Activity wird bei onLoad auch ein Fragment geladen, da ich das als "Home" Fragment nehme um übers Burgermenü wieder auf die "Startseite" zurück zu kommen.
Das Problem ist, dass wenn ich auf ein anderes Fragment wechsle, dort die Buttons nicht reagieren wenn die APP gestartet ist. (Menü und wechsel der Fragmente selbst klappt.)
Wenn ich das ganze Debugge und einen Brakepoint beim OnClickListener setze, wird dieser nie aktiviert... Vermutlich habe ich da beim setzen was falsch gemacht?
Ich habe hier mal meine MainActivity die beim Start aufgerufen wird. Dort wird das Burgermenü initialisiert und bei Onload das Home-Fragment geladen.
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
if(savedInstanceState == null) {
FragmentManager manager = getSupportFragmentManager();
Fragment fragment = new HomeFragment();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.frame_container, fragment);
transaction.commit();
}
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
//Weisst dem Burgermenü die items zu
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
Fragment fragment = null;
if (id == R.id.nav_home) {
fragment = new HomeFragment();
} else if (id == R.id.nav_time) {
fragment = new TimeFragment();
} else if (id == R.id.nav_eatingMoney) {
fragment = new MoneyFragment();
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Alles anzeigen
Dann hier mal die Fragment.java die wird über das Burgermenü in der MainActivity geladen. Hier reagieren keine Buttons. OnClick Listener wird nicht aufgerufen :-/.
public class MoneyFragment extends Fragment implements View.OnClickListener
{
TextView tvAmount;
EditText etInput;
Button btnPlus;
Button btnMinus;
Button btnReset;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.money_fragment_main, container, false);
tvAmount = (TextView) view.findViewById(R.id.textViewCurrentAmountMoney);
etInput = (EditText) view.findViewById(R.id.editTextMoney);
btnPlus = (Button) view.findViewById(R.id.button3Money);
btnMinus = (Button) view.findViewById(R.id.button2Money);
btnReset = (Button) view.findViewById(R.id.buttonMoney);
// onclicklistener für Buttons
btnMinus.setOnClickListener(this);
btnPlus.setOnClickListener(this);
btnReset.setOnClickListener(this);
return inflater.inflate(R.layout.money_fragment_main, container, false);
}
@Override
public void onClick(View v) {
// abfrage der ID für Vergleich mit Button Id
switch(v.getId()) {
// Reset Button
case R.id.buttonMoney:
tvAmount.setText(0);
break;
//min
case R.id.button2Money:
int input = Integer.parseInt(etInput.getText().toString());
int amount = Integer.parseInt(tvAmount.getText().toString());
amount = amount - input;
tvAmount.setText(amount);
break;
//add
case R.id.button3Money:
input = Integer.parseInt(etInput.getText().toString());
amount = Integer.parseInt(tvAmount.getText().toString());
amount = amount + input;
tvAmount.setText(amount);
break;
}
}
}
Alles anzeigen
Und hier mal noch die Layout XML zum Fragment.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:text="@string/textEatingMoney"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewTimeMoney"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textAlignment="center"
android:layout_marginTop="40dp"/>
<TextView
android:text="@string/textEatingMoneyInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewTimeDescriptionMoney"
android:textAlignment="center"
android:layout_marginTop="20dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextMoney"
style="@style/Widget.AppCompat.EditText"
android:layout_marginTop="20dp"
android:textAlignment="center" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" >
<Button
android:text="@string/buttonPlus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button3Money"
style="@android:style/Widget.Holo.Button.Inset"
android:textColor="@android:color/background_dark"
android:textSize="14sp"
android:width="100dp" />
<Button
android:text="@string/buttonReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/buttonMoney"
style="@android:style/Widget.Holo.Button.Inset"
android:textColor="@android:color/background_dark"
android:textSize="14sp"
android:width="100dp" />
<Button
android:text="@string/buttonMinus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2Money"
style="@android:style/Widget.Holo.Button.Inset"
android:textSize="14sp"
android:width="100dp"
android:textColor="@android:color/background_dark" />
</LinearLayout>
<TextView
android:text="@string/textEatingMoneyResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewAmountMoney"
android:textAlignment="center"
android:textStyle="normal|bold"
android:layout_marginTop="50dp"/>
<TextView
android:text="0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textViewCurrentAmountMoney"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textStyle="normal|bold"
android:textAlignment="center"
android:textSize="30sp" />
</LinearLayout>
Alles anzeigen
So, das sind mal die Dateien die denke ich relevant sind?
Ich hoffe mir kann man weiter helfen, ich steh etwas aufm Schlauch :-(.
Danke schon mal.