Meddelande

Minska
No announcement yet.

Android hjälp?

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

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

  • #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?

    Kommentera


    • #3
      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?

      Kommentera


      • #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!!
        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);
        	}
        }

        Kommentera


        • #5
          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.

          Kommentera

          Working...
          X