Hi,
ich heiße Florian und bin neu hier im Forum.
Ich lerne Java seit ca einem halben Jahr und versuche mich jetzt in der Android App Entwicklung einzulernen.
Nun zu meinem Problem:
Bei meiner App kann man über einen Navigation drawer verschieden Kategorien aufrufen.
Beim aufrufen einer Kategorie im Navigation drawer wird der Titel in einer TextView und ein Text in ein EditText übergeben.
Ziel ist das man also eine Kategorie auswählen, dort in einem EditText was reinschreiben kann und den Inhalt speichern und laden kann.
Gespeichert wird manuell durch das klicken eines Speichern Buttons, dies funktioniert auch.
Das Laden soll automatisch bei der Auswahl einer Kategorie im Nagivation drawer funktionieren, und da hängt es.
Ich habe einen Laden Button erzeugt um zu testen ob das laden überhaupt funktioniert so wie ich es programmiert habe.
Beim klick auf diesen Laden Button wird so geladen wie es sein soll.
Wenn ich aber über den Navigation drawer eine Kategorie auswähle funktioniert das Laden nicht so wie gewünscht.
Allerdings habe ich zufällig herausgefunden das wenn ich eine Kategorie im Navigation drawer 2x anklicke es doch funktioniert.
Nach lesen und viel versuchen habe ich mich jetzt doch mal an euch gewendet und hoffe ihr könnt mir weiterhelfen.
Für das Laden und Speichern habe ich mir seperate Klassen geschrieben, die von der MainActivity Klasse angesteuert werden.
In der LadeModul.java habe ich die catch Anweisung der IOException noch nicht angepasst, dies einfach nicht beachten
package de.example.montana.speichernundladen;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener
{
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final SpeicherModul Speichern = new SpeicherModul(this);
final LadeModul Laden = new LadeModul(this);
Button buttonSave = (Button) findViewById(R.id.btnSave);
buttonSave.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
try
{
Speichern.speichern();
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
//Laden-Button
Button buttonLoad = (Button) findViewById(R.id.btnLoad);
buttonLoad.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
try
{
Laden.laden();
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
final 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);
// Tastatur ausblenden wenn navigation drawer geöffnet wird
drawer.setDrawerListener(new DrawerLayout.DrawerListener(){
@Override public void onDrawerSlide(View drawerView, float slideOffset) {}
@Override public void onDrawerOpened(View drawerView) {}
@Override public void onDrawerClosed(View drawerView) {}
@Override public void onDrawerStateChanged(int newState)
{
final InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(drawer.getWindowToken(), 0);
}
});
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
LadeModul Laden =new LadeModul(this);
if (id == R.id.nav_kategorie1)
{
try
{
Laden.laden();
}
catch(IOException e)
{
e.printStackTrace();
}
TextView textViewContentTitle = (TextView) findViewById(R.id.contentTitle);
textViewContentTitle.setText(R.string.content_title1);
}
if (id == R.id.nav_kategorie2)
{
try
{
Laden.laden();
}
catch(IOException e)
{
e.printStackTrace();
}
TextView textViewContentTitle = (TextView) findViewById(R.id.contentTitle);
textViewContentTitle.setText(R.string.content_title2);
}
if (id == R.id.nav_kategorie3)
{
try
{
Laden.laden();
}
catch(IOException e)
{
e.printStackTrace();
}
TextView textViewContentTitle = (TextView) findViewById(R.id.contentTitle);
textViewContentTitle.setText(R.string.content_title3);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Alles anzeigen
package de.example.montana.speichernundladen;
import android.app.Activity;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class LadeModul
{
private EditText eingabePflegeprobleme;
private TextView dateiname;
//Zugriff auf felder erzeugen
public LadeModul(Activity activity)
{
dateiname = ((TextView) activity.findViewById(R.id.contentTitle));
eingabePflegeprobleme = (EditText) activity.findViewById(R.id.editText1);
}
public void laden()throws IOException
{
String hauptverzeichnis = Environment.getExternalStorageDirectory().toString();
String updateDateiname = dateiname.getText().toString();
File verzeichnissMitDatei = new File (hauptverzeichnis +"/" +"TestVerzeichniss"+"/"+updateDateiname +".txt");
FileReader loader1 = new FileReader(verzeichnissMitDatei);
try {
try (BufferedReader reader = new BufferedReader(loader1))
{
StringBuilder b = new StringBuilder();
String zeile;
while((zeile = reader.readLine()) != null)
{
b.append(zeile);
b.append("\n");
}
eingabePflegeprobleme.setText(b.toString());
reader.close();
}
}
catch(IOException ex) {System.out.println("konnte Datei nicht laden");
}
}
}
Alles anzeigen