Diskuze: Jednoducha appka pro android nefunguje
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 18 zpráv z 18.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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;
}
}
}
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ší
diky za odpoved. jdu to vyzkouset.
btw. pouzivam android studio. na linuxu mi to pripada jako nejlepsi volba.
Jo promiň, to jsem přehlédl Díval jsem se jen na ten odkaz.
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?
Button neco = (Button)findViewById(R.id.buttonId);
neco.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
// příkazy
}
});
honza.b4 Zapoměl jsem dát odpověď. :[
honza.b4 : poslední pokus Tlačítko odpovědět mi na tabletu vypovědělo službu.
Diky za odpoved.
Jeste me zajima, co znamena
View v
a proc mas na konci tu double zavorku?
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í
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?
}
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.
A pokud si položku uložíš do proměnné, tak při stisknutí tlačítka nenapíšeš this.neco ale jen neco.
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
Mě vždycky stačila jedna aktivita, takže s timhle ti neporadim.
Poté co vytvoříš další aktivitu, nasměruj se do AndroidManifest.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.
Zobrazeno 18 zpráv z 18.