Avatar
honza.b4
Člen
Avatar
honza.b4:

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:

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:

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):
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  +2 13.2.2014 14:14
Avatar
honza.b4
Člen
Avatar
Odpovídá na Ondřej Boháč (mr.kew.cz)
honza.b4:

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):

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:

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  +1 14.2.2014 19:50
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:
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
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

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
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

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

Nahoru Odpovědět  +2 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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:
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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:
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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:

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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na honza.b4
Zdeněk Pavlátka:

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):

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  +1 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.