AndroidMobileTutorial

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

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();
 }

Literaturtip

vorheriger Beitrag

There is no more story.

nächster Beitrag

Pacman Ghost Lampe

Der Schreiberling

Markus M.

Markus M.

In den letzten 15 Jahren als Consultant und Coach für namhafte internationale Kunden und Agenturen (z.B.: IGT, Red Bull, adidas, OMV, PEZ, Volksoper Wien, Jung von Matt, spreadshirt, Philotech, Wien IT, bet-at-home, Siemens, SAE Institut, draft fcb, seso, looom, bacardi, lindt, uvm.) hat sich eine Menge Wissen angesammelt welches ich hier in diesem Blog gerne mit euch teilen möchte.

Keine Meinung

schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *