» »

Android - Začetnik

Android - Začetnik

hurlimannxt ::

Pozdravljeni!

Sem začetnik v Androidu in bi rabil pomoč. S pomočjo raznih tutorialov sem oblikoval in napisal aplikacijo, simple kalkulator z vnosom dveh števil in gumboma plus in minus in izpis rezultat. Če poženem samo dizajn gre vse vredu, ko pa sem napisal še kodo pa mi na telefonu izpiše aplikacija se je zaustavila. Trenutno imam implementiran samo Plus.

Prosil bi, če mi lahko kdo pove kaj delam narobe?

Rad bi, da bi se aplikacija zagnala na telefonu. Kodo sem samo dodajal v te spodnje datoteke vse ostalo sem pustil pri miru.

MainActivity koda;

package com.example.jure;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.os.Build;

public class MainActivity extends ActionBarActivity {
	
	private int stevilo1, stevilo2, rezultat;
	Button Plus;
	Button Minus;
	EditText stevilo_a, stevilo_b, koncni_rezultat;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
		
		Plus=(Button) findViewById(R.id.button_plus);
		Minus=(Button) findViewById(R.id.button_minus);
		stevilo_a=(EditText) findViewById(R.id.editText_vnos_stevila_1);
		stevilo_b=(EditText) findViewById(R.id.editText_vnos_stevila_2);
		
		Plus.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String A=stevilo_a.getText().toString();
                String B=stevilo_b.getText().toString();
                
                stevilo1=Integer.parseInt(A);
                stevilo2=Integer.parseInt(B);
                
                rezultat=0;
                
                rezultat=stevilo1 + stevilo2;
                koncni_rezultat.setText(Integer.toString(rezultat));
            }
        });
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

}




Strings:

<string name="app_name">Racunalo - Jure Lokovšek</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <color name="zelena">#00611C</color>
    <color name="bela">#ffffff</color>
    <string name="vnos">Vnos stevila</string>
    <string name="rezultat">Rezultat</string>
    <string name="plus">Plus</string>
    <string name="minus">Minus</string>
    <color name="rdeca">#ff0000</color>
    <color name="modra">#0000ff</color>



Dizajn:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.racunalo.MainActivity$PlaceholderFragment" 
    android:background="@color/zelena"
    >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="19dp"
        android:text="@string/vnos"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText_vnos_stevila_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:inputType="number" />

    <EditText
        android:id="@+id/editText_vnos_stevila_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText_vnos_stevila_2"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="number" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/editText_vnos_stevila_1"
        android:text="@string/vnos"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button_plus"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText_vnos_stevila_2"
        android:layout_below="@+id/editText_vnos_stevila_2"
        android:layout_marginTop="26dp"
        android:text="@string/plus" 
        android:background="@color/rdeca"
        />

    <Button
        android:id="@+id/button_minus"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button_plus"
        android:layout_alignBottom="@+id/button_plus"
        android:layout_alignRight="@+id/editText_vnos_stevila_2"
        android:text="@string/minus"
        android:background="@color/modra"
         />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button_plus"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="31dp"
        android:text="@string/rezultat"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText_izpis_rezultata"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView3"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

</RelativeLayout>

shadeX ::

Ne bi bilo slabo če bi prilepil sem tvoj LOGCAT, da bi videli pri kateri vrstici se ti koda ustavi :)

BlackLight ::

Naslednjič raje kot vso kodo (XML...stringe...) prilepi zraven LogCat error. Gre za NullPointerException verjetno pri
koncni_rezultat.setText(Integer.toString(rezultat));
ker ga prej na začetku nikjer nisi poklical iz XML-ja torej:
koncni_rezultat = (EditText)findViewById(R.id.editText_izpis_rezultata);
. Pa mogoče malce za vajo tole kodo optimiziraj sploh konverzije...Ker tole je lahko napisano 10-15 vrstic.

hurlimannxt ::

Mal sem kodo popravil, sem naredil kar si predlagal a se aplikacija vseeno ustavi oz. ne zažene. Napaka je v metodi Plus, ker, če jo zakomentiram se zažene aplikacija.

Glede logcat-a, je tako dolgi, da nevem, če ima smisel ga sem lepit.

Če se komu da naj pogleda projekt na dropbox-u: https://www.dropbox.com/sh/gzcvfste2kwj...


Plus.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                               
                stevilo1=Integer.parseInt(stevilo_a.getText().toString());
                stevilo2=Integer.parseInt(stevilo_b.getText().toString());
                
                koncni_rezultat=(EditText) findViewById(R.id.editText_izpis_rezultata);
                rezultat=0;
                
                rezultat=stevilo1 + stevilo2;
                koncni_rezultat.setText(Integer.toString(rezultat));
            }
        });

shadeX ::

Glede logcat-a, je tako dolgi, da nevem, če ima smisel ga sem lepit.


Kopiraš samo rdeče obarvan LOG. (Kadar se program sesuje je cca zadnjih 30 vrstic LOGCAT-a rdeče obarvanega)

shadeX ::

Sem pogledal v tvojo kodo. In sicer dobiš NullPointerException v vrstici 33. Jaz bi na tvojem mestu pustil fragmente zaenkrat in se posvetil bolj osnovnemu layoutu. Spremeni tole in bo delovalo. (glej komentarje v kodi)

public class MainActivity extends ActionBarActivity {
     
    private int stevilo1, stevilo2, rezultat;
    Button Plus;
    Button Minus;
    EditText stevilo_a, stevilo_b, koncni_rezultat;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

// Dodaj osnovni layout (ne fragment) - ime je obrnjeno v tvojem primeru.
        setContentView(R.layout.fragment_main);
 
     /*   if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        } */
         
        Plus=(Button) findViewById(R.id.button_plus);
        Minus=(Button) findViewById(R.id.button_minus);
        stevilo_a=(EditText) findViewById(R.id.editText_vnos_stevila_1);
        stevilo_b=(EditText) findViewById(R.id.editText_vnos_stevila_2);
         
        Plus.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String A=stevilo_a.getText().toString();
                String B=stevilo_b.getText().toString();
                 
                stevilo1=Integer.parseInt(A);
                stevilo2=Integer.parseInt(B);
                 
                rezultat=0;
                 
                rezultat=stevilo1 + stevilo2;
                koncni_rezultat.setText(Integer.toString(rezultat));
            }
        });
    }

Zgodovina sprememb…

  • spremenil: shadeX ()

hurlimannxt ::

Hvala, deluje :D zanima me kak se napake iščejo. oz kak se tukaj debugira? ali kak jih iz logcat-a prebereš? Do junija imam namen naredit eno uporabno aplikacijo tako, da bom vsak dan delal s tem. Tole bo pa tudi tema kamor bom lepil sprotne probleme tako, da ste še vsi prošeni za pomoč :)

JanOlMajti ::

MacLeod ::

Kje bi se dalo najti izvorno kodo uporabniškega vmesnika za android 4.1 v slovenskem jeziku?
V bistvu rabim izvorno kodo tega kar je izpisano na zaslonu telefona pri nastavitvah, slovenski jezik za ukaze. Menu ki ga vidimo na uporabniškem vmesniku nastavitev.

hurlimannxt ::

Pozdravljeni!

Rabil bi pomoč in sicer kako na najbolj preprost način dobit kontakte. Trenutno delam aplikacijo, ki bo pošiljala sms-e in bi rad dostopal do kontaktu v telefonu. Bilo kakšna pomoč mi prav pride, povezave, nasveti :)

L.p

Mavrik ::

The truth is rarely pure and never simple.

hurlimannxt ::

Rad bi kot vhod metode imel ime ali pa priimek, in bi iskal po imeniku za ta kontakt, potem pa bi rad od tega kontakta vzel številko, da jo lahko uporabim v spodnji metodi :) imem še težave to naredit

public void iskanje(View view) {
		ContentResolver cr = getContentResolver();
		Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
				null, null, null);
		if (cur.getCount() > 0) {
			while (cur.moveToNext()) {
				String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
				String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
				if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
		         Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
		 	        while (pCur.moveToNext()) {
		 		    // Do something with phones
		 	        } 
		 	        pCur.close();
		 	    }
			}
		}


public void sendSMS(View view){
		String number=stevilka.getText().toString();
		String mesidz=sporocilo.getText().toString();
		
		try {
			SmsManager sms=SmsManager.getDefault();
			sms.sendTextMessage(number, null, mesidz, null, null);
			Toast.makeText(getApplicationContext(), "SMS Poslan", Toast.LENGTH_LONG).show();
			
		} catch (Exception e) {
			Toast.makeText(getApplicationContext(), "Napaka SMS Ni Poslan", Toast.LENGTH_LONG).show();
			e.printStackTrace();
		}
	}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Android] Bluetooth aplikacija

Oddelek: Programiranje
51048 (911) marjan_h
»

android črta

Oddelek: Programiranje
412338 (1609) g333kk
»

[android] vstavljanje slike

Oddelek: Programiranje
71182 (1079) messi
»

[android] crash

Oddelek: Programiranje
61296 (1105) messi
»

[Android] Kaj metoda vrne?

Oddelek: Programiranje
6885 (723) virusss8

Več podobnih tem