Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
honza.b4
Člen
Avatar
honza.b4:11.2.2014 19:59

Zdravim vsechny.

Podle tohoto navodu: http://www.itnetwork.cz/…tem-priprava jsem v android studiu napsal jednoduchou appku. IDE zadnou chybu nehlasi, ale kdyz to rozjedu na tabletu, tak app hnedka spadne. Muzete mi prosim poradit, jak a kde z android studia vycist, v cem je chyba? Diky za pomoc.

 
Odpovědět
11.2.2014 19:59
Avatar
Martin Gabriel
Tvůrce
Avatar
Martin Gabriel:12.2.2014 10:21

Zkus si zprovoznit emulator a nejdřív appku rozjet tam. Potom (pokud nenajdeš problém tam) zkus debugovat.

Jinak těžko říct, kde je problém, když sem nepřiložíš Tvůj kód. ;)

Nahoru Odpovědět
12.2.2014 10:21
"Be the change you want to see in the world" - Michael Scofield
Avatar
honza.b4
Člen
Avatar
Odpovídá na Martin Gabriel
honza.b4:13.2.2014 13:59

zdrojak:

package com.example.kreslenicko;

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.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.textView = (TextView)this.findViewById(R.id.textView);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }


    @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 onTouchEvent(MotionEvent event){
        float xPos = event.getX();
        float yPos = event.getY();

        this.textView.setText(getString(R.string.tw) + (int)xPos + "x" + (int)yPos);
        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.
        switch (item.getItemId()) {
            case 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;
        }
    }

}
 
Nahoru Odpovědět
13.2.2014 13:59
Avatar
Ondřej Boháč (mr.kew.cz):13.2.2014 14:14
protected void onCreate(Bundle savedInstanceState) {
   this.textView = (TextView)this.findViewById(R.id.textView);
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

Tady je problém. Hledáš view, které neexistuje. Zkus:

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   this.textView = (TextView)this.findViewById(R.id.textView);

Jinak ještě místo starého používání Eclipse bych nainstaloval http://developer.android.com/…/studio.html je v něm práce příjemnější :)

Editováno 13.2.2014 14:16
 
Nahoru Odpovědět
13.2.2014 14:14
Avatar
honza.b4
Člen
Avatar
Odpovídá na Ondřej Boháč (mr.kew.cz)
honza.b4:13.2.2014 21:35

diky za odpoved. jdu to vyzkouset.

btw. pouzivam android studio. na linuxu mi to pripada jako nejlepsi volba.

 
Nahoru Odpovědět
13.2.2014 21:35
Avatar
Odpovídá na honza.b4
Ondřej Boháč (mr.kew.cz):13.2.2014 21:39

Jo promiň, to jsem přehlédl :) Díval jsem se jen na ten odkaz.

 
Nahoru Odpovědět
13.2.2014 21:39
Avatar
honza.b4
Člen
Avatar
Odpovídá na Ondřej Boháč (mr.kew.cz)
honza.b4:14.2.2014 19:50

Parada. tvoje rada byla zpravna a ted uz to jede.

Ale, jeste me napadlo jedno vylepseni a nevim, jak ho realizovat.
Kdyz v activity_main.xml mam tlacitko button tak jak mu nastavim nejakou funkci v mainActivity.java?

neco jako

if(button == clicked){
udelej tohle a tohle
}

funguje to nejak takhle? nebo jak?

 
Nahoru Odpovědět
14.2.2014 19:50
Avatar
Zdeněk Pavlátka:14.2.2014 19:55
Button neco = (Button)findViewById(R.id.buttonId);
                neco.setOnClickListener(new Button.OnClickListener(){
                        public void onClick(View v){
                                // příkazy
                        }
                });
Nahoru Odpovědět
14.2.2014 19:55
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka:14.2.2014 19:56

honza.b4 Zapoměl jsem dát odpověď. :[

Editováno 14.2.2014 19:57
Nahoru Odpovědět
14.2.2014 19:56
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka:14.2.2014 19:59

honza.b4 : poslední pokus :D Tlačítko odpovědět mi na tabletu vypovědělo službu.

Nahoru Odpovědět
14.2.2014 19:59
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
honza.b4
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
honza.b4:14.2.2014 20:04

Diky za odpoved.

Jeste me zajima, co znamena

View v

a proc mas na konci tu double zavorku?

 
Nahoru Odpovědět
14.2.2014 20:04
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:14.2.2014 20:13
Button neco = (Button)findViewById(R.id.button1);
neco.setOnClickListener(//začátek kulaté
        new Button.OnClickListener(){// začátek první složené
                public void onClick(View v){//začátek druhé složené
                        //příkazy
                }//konec druhé složené
        }//konec první složené
);//konec kulaté

View v je vytvoření proměnné typu View což je předek všech tlačítek, popisků a obecné prvků do android aplikací

Nahoru Odpovědět
14.2.2014 20:13
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
honza.b4
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
honza.b4:14.2.2014 20:57

Pokousim se napsat, aby po stisku tlacitka textView2 se zmenilo na "Ahoooj"

zkousel sem ruzny veci, ale nefunguji.

pokazde v teto metode:
public void onClick(View v){
this.textView2.setText("Ahoooj");
//Nikdy to nejde. Pokazde, kdyz dam this. tak android studio nenajde TextView texview2. Nevite cim to je?
}
 
Nahoru Odpovědět
14.2.2014 20:57
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:14.2.2014 21:02
TextView tv = (TextView)findViewById(R.id.textView2);
//...
public void onClick(View v){
        tv.setText("Ahoooj");
}

Na androidu jsou "položky" dostupné pod svým id, nejsou součástí žádné ovlivnitelné třídy.

Nahoru Odpovědět
14.2.2014 21:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:14.2.2014 21:05

A pokud si položku uložíš do proměnné, tak při stisknutí tlačítka nenapíšeš this.neco ale jen neco.

Nahoru Odpovědět
14.2.2014 21:05
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
honza.b4
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
honza.b4:15.2.2014 13:23

Parada, diky. A posledni vec co me zajima je, jak vytvorit druhou activity a nastavit tlacitko, ktere te na ni prenese.

nejak takhle?:

Button button = (Button)findViewById(R.id.button);
            button.setOnClickListener(new Button.OnClickListener(){
                public void onClick(View v){

                       prepniNaNovouAktivitu;

                }
            });

thx for you time and help

 
Nahoru Odpovědět
15.2.2014 13:23
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:15.2.2014 13:55

Mě vždycky stačila jedna aktivita, takže s timhle ti neporadim.

Nahoru Odpovědět
15.2.2014 13:55
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Ondřej Boháč (mr.kew.cz):15.2.2014 19:27

Poté co vytvoříš další aktivitu, nasměruj se do AndroidManifes­t.xml. Tam musíš přidat záznam o aktivitě (podle té co tam už je třeba :))

A pak už stačí tento kód:

Intent intent = new Intent(this, NovaAktivita.class);
startActivity(intent);

Pokud by jsi chtěl tvé nové aktivitě předat i nějaké parametry. Uděláš to následovně (samozřejmě před startActivity!):

intent.putExtra("nazev","hodnota");

A v nové aktivitě ve funkci onCreate se k těmto parametrům dostaneš pomocí

getIntent().get ...

Při vkládání proměnné se výběr typy parametru určí díky polymorfismu určí za Tebe. Ale při vytahování si musíš pamatovat co jsi tam nacpal :). Doufám že toto třeba odpoví i na Tvou další otázku.

Editováno 15.2.2014 19:30
 
Nahoru Odpovědět
15.2.2014 19:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.