webForumDet fria alternativet

Android hjälp?

4 svar · 1 762 visningar · startad av Ortson

OrtsonMedlem sedan feb. 20129 inlägg
#1

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:

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:

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!

The_HulkMedlem sedan juni 20031 837 inlägg
#2

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?

msossnaMedlem sedan feb. 2002476 inlägg
#3

Som redan nämnts behövs felmeddelandet, hittar dock en hel del underligheter.

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.

String output = " ";
String output2 = " ";

Det finns heller ingen anledning att initiera output och output2. Samma sak med input och input2.

...
if (input2.substring(i, i + 2) == "\n") {
...
if (kategori[i] == "Golf") {
...

Ingen bra ide att jämföra strängar med ==, använd .equals.

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?

OrtsonMedlem sedan feb. 20129 inlägg
#4

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!!

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);
	}
}
msossnaMedlem sedan feb. 2002476 inlägg
#5

Vad blir det för fel?

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?

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.

List kategori = new LinkedList();

Om du ändrar det till:

List<String> kategori = new LinkedList<String>();

Slipper du skriva

fysList.add((String) aktiviteter.get(i));

då kan du även ändra de for-lopparna till

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.

139 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)