Android Activities

In der Androidentwicklung repräsentiert eine Activity einen Screen der Anwendung, der zumindest mit einem einfachen Layout verknüpft ist und auf die Benutzereingaben reagiert.
Activities gehören neben den Broadcast Receivern, den Services und den Content Providern zu den wichtigsten Androidkomponenten. Die meisten Android Anwendungen bestehen aus mindestens einer Activity (es gibt auch Anwendungen die ohne Activity auskommen und nur im Hintergrund laufen, eine Anwendung die über einen Service im Hintergrund arbeitet benötigt keine Benutzerschnittstelle).
Inhalte
Deklarieren einer Activity
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="at.interactivecuriosity.androidcourse.declareanactivity" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Starten einer Activity
public void launchIntent(View view) { Log.i("MainActivity","launchIntent()"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.alpenradler.com/")); startActivity(intent); }
Wechseln zwischen Activities
MainActivity.java:
public void onClickSwitchActivity(View view) { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); }
SecondActivity.java:
public void onClickClose(View view) { finish(); }
Daten an eine Activity übergeben
Wie auch beim starten einer Activity übernimmt auch hier der Intent die ganze Arbeit. Man erstellt einen Intent und nutzt dessen putExtra() Methode, die ein name/value Paar erwartet. Im Beipsielcode wird mit der Konstante Intent.EXTRA_TEXT ein einfacher Text übergeben und die Empfänger-Activity liest diesen mit der Intent-Methode getStrintExtra() aus.
Sendende Activity:
public void onClickSwitchActivity(View view) { EditText editText = (EditText)findViewById(R.id.editTextData); String text = editText.getText().toString(); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra(Intent.EXTRA_TEXT,text); startActivity(intent); }
Empfänger Activity:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); TextView textView = (TextView)findViewById(R.id.textViewText); if (getIntent()!=null && getIntent().hasExtra(Intent.EXTRA_TEXT)) { textView.setText(getIntent().getStringExtra(Intent.EXTRA_TEXT)); } }
Ein Ergebnis von einer Activity erhalten
Ein Ergebnis von einer aufgerufenen Actitvity zu erhalten ist relativ einfach, die Activity welche den Intent verschickt verwendet statt der Methode startActivity() die startActivityForResult() Methode damit die Activity weiß das wir ein Ergebnis wünschen. Um ein Ergebnis zu erhalten müssen wir noch den onActivityResult () Callback Handler implementieren.
In der aufgerufenen Activity müssen wir nur noch sicherstellen, dass wie mit der setResult() Methode ein Ergebnis zurückliefern.
MainActivity:
public void onClickSwitchActivity(View view) { EditText editText = (EditText)findViewById(R.id.editTextData); String text = editText.getText().toString(); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra(Intent.EXTRA_TEXT,text); startActivityForResult(intent,1); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode==RESULT_OK) { Toast.makeText(this, Integer.toString(data.getIntExtra(REQUEST_RESULT, 0)), Toast.LENGTH_LONG).show(); } }
SecondActivity:
public void onClickClose(View view) { Intent returnIntent = new Intent(); returnIntent.putExtra(MainActivity.REQUEST_RESULT,42); setResult(RESULT_OK, returnIntent); finish(); }
Keine Meinung