webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Programmering & Utveckling > Java

Java Diskussioner om all typ av Javautveckling.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-04-01, 08:49   #1
Ortson
Medlem
 
Registrerad: 2012-02-05
Inlägg: 9
Lösningar: 0
Android hjälp?

Hej jag håller på att utveckla en app för android och har lite problem, jag tror att felet ligger i skrivandet och läsningen av filerna eller när jag skapar spinners?
Här är koden för klassen där skrivningen görs:
Kod:
public class Aktivitet extends Activity{
	
Button skapa;
EditText etNamn;
String sNamn;

RadioGroup rgKategorier;
RadioButton rbGolf;
RadioButton rbFys;
RadioButton rbMentalt;
RadioButton rbOvrigt;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aktivitet);

        etNamn = (EditText) findViewById(R.id.etNamn);
        skapa = (Button) findViewById(R.id.bSkapa);
        rgKategorier = (RadioGroup) findViewById(R.id.rgKategorier);   
        rbGolf = (RadioButton) findViewById(R.id.rbGolf);
        rbFys = (RadioButton) findViewById(R.id.rbFys);
        rbMentalt = (RadioButton) findViewById(R.id.rbMentalt);
        rbOvrigt = (RadioButton) findViewById(R.id.rbOvrigt);
                
        skapa.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				
				int selectedId = rgKategorier.getCheckedRadioButtonId();
				
				String output = " ";
				String output2 = " ";
				
				sNamn = etNamn.getText().toString();
				
				String FILENAME = "aktivitetInfo.txt";
				String FILENAME2 = "kategoriInfo.txt";

				
				try {
					OutputStreamWriter osw = new OutputStreamWriter(openFileOutput("FILENAME", 0));
					OutputStreamWriter osw2 = new OutputStreamWriter(openFileOutput("FILENAME2", 0));
					if(selectedId == rbGolf.getId()){
						output = "Golf\n";
						osw2.write(output);}
					else if(selectedId == rbFys.getId()){
						output = "Fys\n";
						osw2.write(output);}
					else if(selectedId == rbMentalt.getId()){
						output = "Mentalt\n";
						osw2.write(output);}
					else if(selectedId == rbOvrigt.getId()){
						output = "Ovrigt\n";
						osw2.write(output);}
					output2 = sNamn + "\n";
					osw.write(output2);
					osw.close();
					osw2.close();
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				Intent openMainProgram = new Intent("martin.app.development.DSFACTIVITY");
    			startActivity(openMainProgram);
			}
		});
        
        
    }
}
Och här är koden där läsningen sker:
Kod:
public class Post extends Activity{
		
	Spinner spGolf, spFys, spMentalt, spOvrigt;//Spinners for categories
		
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.post);//SEt post to xml layout

		String inputFile = "aktivitetInfo.txt";//Set upp the input files
		String inputFile2 = "kategoriInfo.txt";
		
		String input = "";//The input taken from files
		String input2 = "";
		
		//Setup spinners
		spGolf = (Spinner) findViewById(R.id.spGolf);
		spFys = (Spinner) findViewById(R.id.spFys);
		spMentalt = (Spinner) findViewById(R.id.spMentalt);
		spOvrigt= (Spinner) findViewById(R.id.spOvrigt);
		
		
		
		String[] kategori = {};
		String[] aktivitet = {};
		
		try {
			InputStream is = openFileInput(inputFile);
			InputStream is2 = openFileInput(inputFile2);
			
			InputStreamReader inputreader = new InputStreamReader(is);
			InputStreamReader inputreader2 = new InputStreamReader(is2);
		    BufferedReader buffreader = new BufferedReader(inputreader);
		    BufferedReader buffreader2 = new BufferedReader(inputreader2);
			
			input = buffreader.toString();
			input2 = buffreader2.toString();
			
			int length = input.length();
			int length2 = input2.length();
			
			for(int i = 0; i < length; i++){
				String word = "";
				int j = 0;
				if(input.substring(i, i+2) == "\n"){
					aktivitet[j] = word;
					j++;
				}
				else
					word += input.substring(i, i+1);
			}
			for(int i = 0; i < length2; i++){
				String word = "";
				int j = 0;
				if(input2.substring(i, i+2) == "\n"){
					kategori[j] = word;
					j++;
				}
				else
					word += input.substring(i, i+1);
			}
			
			is.close();
			is2.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		List<String> golfList = new ArrayList<String>();
		List<String> fysList = new ArrayList<String>();
		List<String> mentaltList = new ArrayList<String>();
		List<String> ovrigtList = new ArrayList<String>();
		for(int i = 0; i < kategori.length; i++){
			if(kategori[i] == "Golf"){
				golfList.add(aktivitet[i]);
			}
			else if(kategori[i] == "Fys"){
				fysList.add(aktivitet[i]);
			}
			else if(kategori[i] == "Mentalt"){
				mentaltList.add(aktivitet[i]);
			}
			else{
				ovrigtList.add(aktivitet[i]);
			}
		}
		ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_spinner_item, golfList);
		dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spGolf.setAdapter(dataAdapter);
		
		ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, fysList);
		dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spFys.setAdapter(dataAdapter);
		
		ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, mentaltList);
		dataAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spMentalt.setAdapter(dataAdapter);
	
		ArrayAdapter<String> dataAdapter4 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, ovrigtList);
		dataAdapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spOvrigt.setAdapter(dataAdapter);
	}
}
Sådär tack på förhand!
Ortson besöker inte forumet just nu   Svara med citat
Äldre 2012-04-03, 07:17   #2
The_Hulk
Medlem
 
Registrerad: 2003-06-25
Inlägg: 1 916
Lösningar: 71
Du bör nog beskriva vad du får för fel. Blir det fel vid kompilering eller när du kör koden?
Får du något felmeddelande?
The_Hulk besöker inte forumet just nu   Svara med citat
Äldre 2012-04-03, 12:06   #3
msossna
Medlem
 
Registrerad: 2002-02-04
Ort: Jönköping
Inlägg: 279
Lösningar: 2
Som redan nämnts behövs felmeddelandet, hittar dock en hel del underligheter.

Kod:
String FILENAME = "aktivitetInfo.txt";
String FILENAME2 = "kategoriInfo.txt";

try {
  OutputStreamWriter osw = new OutputStreamWriter(openFileOutput("FILENAME", 0));
  OutputStreamWriter osw2 = new OutputStreamWriter(openFileOutput("FILENAME2", 0));
Detta ser fel ut, borde vara utan " i anropen till openFileOutput.

Kod:
String output = " ";
String output2 = " ";
Det finns heller ingen anledning att initiera output och output2. Samma sak med input och input2.

Kod:
...
if (input2.substring(i, i + 2) == "\n") {
...
if (kategori[i] == "Golf") {
...
Ingen bra ide att jämföra strängar med ==, använd .equals.
Kod:
String[] kategori = {};
String[] aktivitet = {};
...
aktivitet[j] = word;
...
kategori[j] = word;
...
Hur är det tänkt att dessa ska fungera? De sätts till tomma arrayer, men lite senare gör du access till en viss position i listan?
msossna besöker inte forumet just nu   Svara med citat
Äldre 2012-04-03, 18:02   #4
Ortson
Medlem
 
Registrerad: 2012-02-05
Inlägg: 9
Lösningar: 0
Tack för all hjälp quotens runt FILENAME är nu fixat och jag har nu gjort om lite i post.java koden också med när jag startar post delen så får jag ett fel meddelande från android... Jag vet inte riktigt vad jag ska göra... Tack för all hjälp så här långt det uppskattas verkligen:D!!
Kod:
public class Post extends Activity{
		
	Spinner spGolf, spFys, spMentalt, spOvrigt;//Spinners for categories
		
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.post);//SEt post to xml layout

		String inputFile = "aktivitetInfo.txt";//Set upp the input files
		String inputFile2 = "kategoriInfo.txt";
		
		String input;//The input taken from files
		String input2;
		
		//Setup spinners
		spGolf = (Spinner) findViewById(R.id.spGolf);
		spFys = (Spinner) findViewById(R.id.spFys);
		spMentalt = (Spinner) findViewById(R.id.spMentalt);
		spOvrigt= (Spinner) findViewById(R.id.spOvrigt);
		
		
		//Holding the difrent categories and activits
		List kategori = new LinkedList();    // Doubly-linked list
		kategori = new ArrayList();
		List aktiviteter = new LinkedList();    // Doubly-linked list
		aktiviteter = new ArrayList();
		
		try {
			InputStream is = openFileInput(inputFile);
			InputStream is2 = openFileInput(inputFile2);
			
			InputStreamReader inputreader = new InputStreamReader(is);
			InputStreamReader inputreader2 = new InputStreamReader(is2);
		    BufferedReader buffreader = new BufferedReader(inputreader);
		    BufferedReader buffreader2 = new BufferedReader(inputreader2);
			
			input = buffreader.toString();
			input2 = buffreader2.toString();
				
			int length = input.length();
			int length2 = input2.length();
			
			for(int i = 0; i < length; i++){
				String word = "";
				if(input.substring(i, i+2).equals("\n")){
					aktiviteter.add(word);
					word = "";
				}
				else
					word += input.substring(i, i+1);
			}
			for(int i = 0; i < length2; i++){
				String word = "";
				if(input2.substring(i, i+2).equals("\n")){
					kategori.add(word);
					word = "";
				}
				else
					word += input.substring(i, i+1);
			}
			
			is.close();
			is2.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		List<String> golfList = new ArrayList<String>();
		List<String> fysList = new ArrayList<String>();
		List<String> mentaltList = new ArrayList<String>();
		List<String> ovrigtList = new ArrayList<String>();
		for(int i = 0; i < kategori.size(); i++){
			if(kategori.get(i) == "Golf"){
				golfList.add((String) aktiviteter.get(i));
			}
			else if(kategori.get(i) == "Fys"){
				fysList.add((String) aktiviteter.get(i));
			}
			else if(kategori.get(i) == "Mentalt"){
				mentaltList.add((String) aktiviteter.get(i));
			}
			else{
				ovrigtList.add((String) aktiviteter.get(i));
			}
		}
		ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_spinner_item, golfList);
		dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spGolf.setAdapter(dataAdapter);
		
		ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, fysList);
		dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spFys.setAdapter(dataAdapter2);
		
		ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, mentaltList);
		dataAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spMentalt.setAdapter(dataAdapter3);
	
		ArrayAdapter<String> dataAdapter4 = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item, ovrigtList);
		dataAdapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spOvrigt.setAdapter(dataAdapter4);
	}
}
Ortson besöker inte forumet just nu   Svara med citat
Äldre 2012-04-05, 13:25   #5
msossna
Medlem
 
Registrerad: 2002-02-04
Ort: Jönköping
Inlägg: 279
Lösningar: 2
Vad blir det för fel?

Kod:
List kategori = new LinkedList();    // Doubly-linked list
kategori = new ArrayList();
List aktiviteter = new LinkedList();    // Doubly-linked list
aktiviteter = new ArrayList();
Vad är vitsen med att först skapa en tom LinkedList för att sedan skriva över variabeln med en ArrayList?

Kod:
for(int i = 0; i < length; i++){
    String word = "";
  if(input.substring(i, i+2).equals("\n")){
    aktiviteter.add(word);
    word = "";
  }
  else
    word += input.substring(i, i+1);
}
Här (och även nästa for-loop) kommer bara fylla på med tomma strängar eftersom du sätter word till tom sträng precis innan if.

Kod:
List kategori = new LinkedList();
Om du ändrar det till:
Kod:
List<String> kategori = new LinkedList<String>();
Slipper du skriva
Kod:
fysList.add((String) aktiviteter.get(i));
då kan du även ändra de for-lopparna till
Kod:
for (String kat : kategori) {
  if(kat.equals("Golf")){
    golfList.add(kat);
  }
...
}
Men som sagt behöver veta vad det blir för fel för att kunna hjälpa till mer.
msossna besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Programmering & Utveckling > Java

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 19:53.


Powered by: vBulletin Version 3.8.6
Copyright © webForum