Naar content
Trending apps
  • Inbox by Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger

  • Facebook

Trending games
  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

  • The Elder Scrolls: Blades

  • Ghostbusters World

Trending smartphones
  • Microsoft Surface Duo

  • OnePlus 7T Pro

  • Nokia 7.2

  • Xiaomi Mi 9T Pro

  • Samsung Galaxy Note 10 Plus

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

redbulletnl

redbulletnl

  • Lid sinds 02 september 2011
  • Berichten 2991
  • Reputatie 60
  • #1
  • 15 september 2011
  • 10:46

Hallo,

Woutervegter heeft helaas weinig tijdmaar vond het wel een goed idee om een paar extra oefeningen bij de DevTuts te doen. Mij leek het een mooie oefening om een EditText erbij te doen om informatie over de ingeplande afspraak meetegeven. (Dit kan ook uitgebreid worden naar de afspraak naar file schrijven of een EditText met contact persoon erbij maken)

Ik ben niet goed in uitleggen dus als er vragen zijn stel ze maar

2969


p.s. Wouter als je het er niet mee eens bent met wat ik doe pm me maar of zet het hieronder dan vraag ik wel een forum mod om de topic te verwijdere

Bewerkt (15 september 2011 10:46)
redbulletnl

redbulletnl

  • Lid sinds 02 september 2011
  • Berichten 2991
  • Reputatie 60
  • #2
  • 15 september 2011
  • 10:46

EditText toevoegen:
Voeg een EditText toe aan je linearlayout.xml zodat je text kan typen. Geef je EditText een fatsoenlijke naam zoals: etAfspraak (de et staat voor EditText). Als je wilt kun je ook een TextView (een soort label) toevoegen zodat je weet waarvoor je EditText is. De layout is nu klaar (natuurlijk maak je alles netjes met marges enz)

Nu je een EditText hebt toegevoegd kun je erin typen maar verder kun je er niks mee, dus we gaan de MainActivity aanpassen.
Net als je button, checkbox en datepicker voeg je EditText mEtAfspraak boven aan bij de rest. mEtAfspraak = (EditText) findViewById(R.id.etAfspraak); mag je ook ergens neerzetten (je weet wel waar). Nu is je EditText bruikbaar.
We gaan nu de inhoud van de edittext gebruiken in een toastmassage. Voeg boven de Toastmassage een string toe die de waarden uit je edittext haalt:
String afspraakInfo = mEtAfspraak.getText().toString();
De toast is al van te vore gemaakt dus gaan we er iets in toevoegen, eerst was de toast: “Uw afspraak is ingepland op: ” + date
achter date gaan we een stukje tekst toevoegen bijvoorbeeld : “\n Afspraak gaat over: ” de \n zorgt dat je een nieuwe regel in de toast krijgt. Na het stukje tekst moeten we de afspraak info toevoegen, door heel simpel + afspraakInfo erachter te typen.

Nu heb je een programma gemaakt die je een datum laat kiezen met extra informatie

Bewerkt (15 september 2011 10:46)
redbulletnl

redbulletnl

  • Lid sinds 02 september 2011
  • Berichten 2991
  • Reputatie 60
  • #3
  • 15 september 2011
  • 10:47

Wat heb je nodig?
Allereest een directory (map) om een bestand erin te zetten. Om het op je externe sd kaart op te slaan moet je in de AndroidManifest.xml de toestemming geven (persmission)
de permission zet je bove <application>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Bij de imports gebruik je:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

verder heb je nog een paar dingetjes nodig:
een String met de filenaam, een String met de file extensie (bijv .txt of .doc) en de inhoud van de file.

Onder EditText = mEtAspraak heb ik
public String fileNaam = “fileNaam”;
public String fileExtensie = “.txt”;
staan, ik heb de fileExtensie apart genomen van de naam maar je kan natuurlijk ook:
public String fileNaam = “fileNaam.txt” doen. Mijn voorkeur gaat uit naar van elkaar gescheiden zodat je later radiobuttons kan toevoegen om ze te switche tussen .doc .txt of .pdf enzovoort.

Voor de gene die net als mij voor de filenaam en extensie los hebben gekozen moeten deze stap nog doen:
Zet dit onder het stukje waar je de tekst uit de EditText ophaalt:
String fileNaamCompleet = fileNaam + Extensie;

Het schrijven zelf
Het schrijven zelf lukt alleen maar als ik try{ } en catch { } gebruik, dit komt in de volgende DevTut van Wouter
try{
File file = new File(Environment.getExternalStorageDirectory(), fileNaamCompleet);

BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));

writer.write("Datum: " + date);
writer.write("\nDetails: " + afspraakInfo + "\n");
writer.newLine();
writer.flush();
writer.close();
Toast.makeText(this, "Afspraak opgeslagen",Toast.LENGTH_SHORTl).show();
}


De datum en afspraakinfo worden op aparte regels geplaatst, achter afspraak info heb ik ook nog een “enter” toegevoegd zodat bij de volgende afspraak je gelijk op een nieuwe regel begint.

nu het proberen gaan we afvangen:
catch (IOException e) {
e.printStackTrace();
}

Na het afvangen kun je de oude toast massage laten staan of weghalen.


Het is niet perfect maar hier een voorbeeld van Wouters code alleen dan aangepast
package com.VSM.DatePicker;


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;

public class Main extends Activity {
Button mBtnPlanMe;
CheckBox mCbSaturdaysAllowed;
DatePicker mDpDate;
EditText mEtAfspraak;
public String fileNaam = "fileNaam";
public String fileExtensie = ".txt";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linearlayout);

mBtnPlanMe = (Button) findViewById(R.id.btnPlanMe);
mCbSaturdaysAllowed = (CheckBox) findViewById(R.id.cbSaturdaysAllowed);
mDpDate = (DatePicker) findViewById(R.id.dpDate);
mEtAfspraak = (EditText) findViewById(R.id.etAfspraak);
}

public void planMe(View view){
if (view == mBtnPlanMe){
Calendar cal = Calendar.getInstance();

int day = mDpDate.getDayOfMonth();
int month = mDpDate.getMonth();
int year = mDpDate.getYear();

cal.set(year, month, day);

if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
cal.add(Calendar.DAY_OF_MONTH, 1);
}

if (!mCbSaturdaysAllowed.isChecked() && cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
cal.add(Calendar.DAY_OF_MONTH, 2);
}

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
String date = formatter.format(cal.getTime());
String afspraakInfo = mEtAfspraak.getText().toString();
String fileNaamCompleet = fileNaam + fileExtensie;


try{
File file = new File(Environment.getExternalStorageDirectory(), fileNaamCompleet);

BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));

writer.write("Datum: " + date);
writer.write("\nDetails: " + afspraakInfo + "\n");
writer.newLine();
writer.flush();
writer.close();

Toast.makeText(this, "Afspraak opgeslagen", Toast.LENGTH_SHORT).show();

}

catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(this, "Uw afspraak is ingepland op: " + date + "\nMet of over: " + afspraakInfo, Toast.LENGTH_LONG).show();

}



}
}


EDIT: een leuke toevoeging voor je EditText is om in je layout dit toe te voegen:
android:hint="Afspraak info"

hierdoor komt er in het grijs al iets in de EditText te staan

Bewerkt (15 september 2011 10:47)
redbulletnl

redbulletnl

  • Lid sinds 02 september 2011
  • Berichten 2991
  • Reputatie 60
  • #4
  • 15 september 2011
  • 10:47

*gereserveerd*
op / aanmerkingen kunnen hieronder gepost worden.
In de toekomst komt er nog misschien een versie met radio button erbij
Of je geschreven file lezen

Bewerkt (15 september 2011 10:47)
bassie1995

bassie1995

  • Lid sinds 04 januari 2011
  • Berichten 2028
  • Reputatie 0
  • #5
  • 27 september 2011
  • 16:34

Ziet er interessant uit, ga het gelijk even proberen!

Op mijn telefoon staat het bestand in de SD-kaart, en heet het fileNaamfileExtensie… ?

Heb nu mijn string fileExtensie = “.txt”; gemaakt, omdat ik hier eerst “Extensie”; had staan, maar dat zal het toch niet zijn?

EDIT: Heb ik gelijk als ik zeg dat je de filenaam zelf in moet vullen bij het declareren van de Strings fileNaam en fileExtensie?

Bewerkt (27 september 2011 16:34)

Reageer

Om te reageren, dien je te zijn ingelogd. Druk op de onderstaande knop om in te loggen of maak een nieuwe account aan.

Inloggen Registreren