2016-09-09 2 views
-2

https://developer.android.com/training/basics/firstapp/starting-activity.htmlWie können verschiedene Aktivitäten in Android richtig kommunizieren und Absichten senden?

Und versuchen, eine Nachricht zwischen den Aktivitäten zu senden.Ich möchte, dass der Benutzer Text in der Hauptaktivität eingeben, drücken Sie senden und zeigen Sie es in einer anderen Aktivität. Aus irgendeinem Grund, nachdem ich die App auf meinem Handy gespielt habe und den "Senden" -Button gedrückt habe, der Absichts- und Nachrichteninhalt an die nächste Aktivität übertragen soll, zeigt es nur eine leere Aktivität an.

Ich denke, dass ich nicht geändert haben musste content_main, da ich ein wenig mit dieser XML-Datei und activity_main verwechselt wurde und nicht sicher war, wo jeder Codeabschnitt gehen sollte.

Aktueller Code:

MainActivity.java

package com.example.myfirstapp; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends AppCompatActivity { 
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

/** Called when the user clicks the Send button */ 
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(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 
} 

DisplayMessageActivity.java:

package com.example.myfirstapp; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.EditText; 
import android.widget.TextView; 


public class DisplayMessageActivity extends AppCompatActivity { 

public class MainActivity extends AppCompatActivity { 
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    /** Called when the user clicks the Send button */ 
    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(EXTRA_MESSAGE, message); 
     startActivity(intent); 
    } 
} 
} 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<EditText android:id="@+id/edit_message" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage" 
    /> 
</LinearLayout> 

activity_display_message.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent" 
android:layout_height="match_parent"  android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context="com.example.myfirstapp.DisplayMessageActivity" 
android:id="@+id/activity_display_message" 
> 

</RelativeLayout> 

content_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<EditText android:id="@+id/edit_message" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage" 
    /> 
</LinearLayout> 
+0

Warum haben Sie 'MainActivity' in' DisplayMessageActivity' geschrieben ?? –

+0

Gute Frage! Anfänger Fehler ich denke .. Danke für das Aufzeigen dieser – yo1122

Antwort

0

bearbeiten

public class DisplayMessageActivity extends AppCompatActivity { 

public class MainActivity extends AppCompatActivity { 

in Frage.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
     String value = extras.getString(EXTRA_MESSAGE); 
     //The key argument here must match that used in the other activity 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     editText .setText(value) 

     } 
    } 

Mit dieser Technik Variablen von einer Aktivität zur anderen weitergeben müssen:

+0

@RahulSharma er falsche Code in DisplayMessageActivity eingefügt –

0

In der neuen Aktivität, das heißt DisplayMessageActivity.java diese Werte abrufen.

0

Wenn Sie die extraString in DisplayMessageActivity zu bekommen, dass Sie aus früheren Tätigkeit MainActivity
versuchen diese

// try this in onCreate() of DisplayMessageActivity 
String myExtraString = getIntent.getStringExtra(EXTRA_MESSAGE); 
if(myExtraString == null) 
{ // no extraString was attached to the intent 
} 
0

Sie haben eine TextView in Ihrem activity_display_message.xml erklären geschickt haben

<TextView 
android:id="@+id/show_message" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

Dann in Ihrer DisplayMessageActivity.java

public class DisplayMessageActivity extends AppCompatActivity { 

    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Bundle bundle = getIntent().getExtras(); 
     String message = bundle.getString(EXTRA_MESSAGE); 

     TextView textView = (TextView) findViewById(R.id.show_message); 
     textView.setText(message); 
    } 
} 
Verwandte Themen