Hi, danke.
Wieso habe ich das so gemacht und dann nicht gesehen >.<.
Das war auf jeden Fall das Problem. Danke.
Beiträge von Frost208
-
-
Kann mir keiner helfen oder ein Tipp geben?
Denn sonst werd ich das ganze wahrscheinlich von Grundauf nochmal neu machen. -
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.
Java: MainActivity
Alles anzeigenpublic 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; } }
Dann hier mal die Fragment.java die wird über das Burgermenü in der MainActivity geladen. Hier reagieren keine Buttons. OnClick Listener wird nicht aufgerufen :-/.
Java: Fragment
Alles anzeigenpublic 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; } } }
Und hier mal noch die Layout XML zum Fragment.
XML: Fragment XMl
Alles anzeigen<?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>
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.
-
Hallo,
vielen Dank für die Hilfe. Konnte es so umsetzen -
Guten Tag,
ich bin noch recht neu was das Programmieren mit Android angeht und hätte eine Frage.Ich habe als vorlage das von Android-Studio vorgegebene Burgermenü genommen und etwas angepasst. die Main_Activity sieht wie folgendermaßen aus.
Java
Alles anzeigenpackage imports 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); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_home) { Intent intent = new Intent(this, MainActivity.class); this.startActivity(intent); } else if (id == R.id.nav_time) { Intent intent = new Intent(this, TimeActivity.class); this.startActivity(intent); } else if (id == R.id.nav_XX2) { Intent intent = new Intent(this, XX2Activity.class); this.startActivity(intent); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } }
Ich kann wenn ich die APP starte das Menü Aufklappen und zwischen den Activities im Menü wechseln. Allerdings sehe ich das Menü nur in der Hauptactivitie. In den anderen 2 nicht. Da muss ich mit dem Back-Button des Smartphones wieder zurück.Wie bekomme ich jetzt das Menü bei den Anderen Activities hin? Muss es bei denen auch so eingebunden werden wie hier? Also mit -> implements NavigationView.OnNavigationItemSelectedListener, der Methode onNavigationItemSelected() usw. Oder gibt es eine andere Lösung dazu?
Ich hoffe man kann mir weiter helfen.
Vielen Dank schonmal