Dzisiaj trochę z innej strony. Podzielę się z wami traumatycznym przeżyciem jakim było dla mnie odpalenie innego IDE niż VS. Rozpocząłem z czystej ciekawości, a może nawet potrzeby biznesowej – przygodę z pisaniem aplikacji w androidzie.
Podejście 1
Wczoraj odpaliłem android studio, udało mi się wgrać hello world na telefon, aby to zrobić musiałem:
- zainstalować z „SDK Platforms” – Android 6.0
- zainstalować z „SDK Tools” – Google USB Driver
- stworzyć testowy projekt
Następnym moim celem było stworzenie prostego przycisku i podpięcie do niego zdarzenia
Jakież było moje zdziwienie kiedy okazało się, że designer tutaj nie działa zbyt dobrze… pierwsza próba przypisania spaliła na panewce, bo andzia zrobiła mi coś takiego:
1 2 3 4 5 6 7 |
<Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:layout_weight="1" android:onClick="sendMessage (MainActivity)" /> |
A metoda nazywa się po prostu sendMessage… ok… wywaliłem więc (MainActivity) i teraz działa. Cóż… dzisiaj już robiłem z oficjalnego tutoriala
Podejście 2
Zrobiłem aplikację która wyświetla textBox i przycisk, a po kliknięciu wysyła na inną stronę/aktywność i wyświetla wpisany tekst, super!
Na pierwszy zgrzyt w oficjalnym tutorialu natrafiłem przy orientacji aktywności. Rzekomo wystarczyło dodać folder o nazwie layout-land i skopiować xml z layout, ale po dodaniu nie było go widać so… stack.. i już wiem, że miałem zaznaczony android zamiast project! Teraz mój projekt obsługuje również orientację poziomą – elegancko
Istotne rzeczy:
[1] identyfikatory kontrolek:
android:id=”@+id/edit_message” (strasznie brzydki zapis 😛 )
[2] ciągi tekstowe z resource:
android:text=”@string/button_send” (w res\values\strings.xml jest zapisany tak:
1 2 3 4 5 |
<resources> ... <string name="button_send">Send</string> ... </resources> |
[3] szerokość/wysokość -„prawie” auto – minimalna wielkość w której się zmieści kontrolka to: wrap_content
[4] szerokość/wysokość maksymalny rozmiar rodzica to: match_parent
[5] do przekazywania informacji między aktywnościami/stronami służy Intent
1 2 3 4 5 6 7 |
public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra("com.example.myfirstapp.MESSAGE", message); startActivity(intent); } |
i odebrania w docelowej aktywności:
1 2 3 4 5 6 7 8 |
Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message); layout.addView(textView); |
[6] trzymanie stringów w różnych językach tutaj jest również banalne, wystarczy nowy folder z przyrostkiem skrótu języka np. values-pl/strings.xml