Как получить данные от другой деятельности в android?

у меня есть два вида деятельности, такие как Activity A и B, и я пытаюсь передать две разные строки из A В B, используя Bundle и startActivity(intent).

вот так:

Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("vidoedetails", filedetails);
//bundle.putString("videoname", filename);


intent.putExtras(bundle);
//intent.putExtra("videofilename", filename);
//intent.putExtra("vidoefiledetails", filedetails);
startActivity(intent);

и в классе B я использую два TextViews для отображения строк из класса A отдельно.

вот так:

Intent i = getIntent();
Bundle extras = i.getExtras();

filedetails = extras.getString("videodetails");
filename = extras.getString("videoname");

проблема filedetils печатается в классе B, но не имя файла.

любое решение для этого?

5 ответов


у вас опечатка:

bundle.putString("vidoedetails", filedetails);

должно быть

bundle.putString("videodetails", filedetails);

Я знаю, что я опоздал на 9 дней на этот ответ, но это хороший пример того, почему я создаю класс констант. С классом констант не имеет значения, если он написан с ошибкой ("видео" - > "vidoe"), потому что он будет "с ошибкой" в обоих местах, когда вы ссылаетесь на него через известное местоположение.

константы.java

public static String WELL_KNOWN_STRING "org.example.stackoverflow.4792829";

Activity1.java

bundle.putString(Constants.WELL_KNOWN_STRING, filedetails);

действие activity2.java

filedetails = extras.getString(Constants.WELL_KNOWN_STRING);        

Да, вы неправильно написали videodetails:
Твой вид*OE*подробности
Правильно: вид*ЕО*подробности


// First activity
actvty_btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {               
        Intent i = new Intent(v.getContext(),SECONDACTIVITY.class);    
        startActivityForResult(i, STATIC_INTEGER_VALUE);
    }
});

/* This function gets the value from the other activity where we have passed a value on calling this activity */ 
public void activity_value() {
    Intent i = getIntent();
    Bundle extras=i.getExtras();
    if(extras !=null) {
        // This is necessary for the retrv_value
        rtrv_value = extras.getString("key");

        if(!(rtrv_value.isEmpty())) {
            // It displays if the retrieved value is not equal to zero
            myselection.setText("Your partner says = " + rtrv_value);
        }
    }
}


// Second activity
myBtn.setOnClickListener(new View.OnClickListener () {
    public void onClick(View v) {
        Intent intent = new Intent(v.getContext(), FIRSTACTIVITY.class);
        Bundle bundle = new Bundle();
        bundle.putString("key", txt1.getText().toString());
        // Here key is just the "Reference Name" and txt1 is the EditText value
        intent.putExtras(bundle);               
        startActivity(intent);
    }
});

вот еще один способ передачи данных между мероприятиями. Это просто пример из учебника, которому я следовал. У меня есть заставка, которая работает в течение 5 секунд, а затем она убьет звуковой клип из:

@Override
protected void onPause() {
    super.onPause();
    ourSong.release();
}

я решил, что хочу, чтобы звуковой клип продолжал играть в следующую деятельность, все еще будучи в состоянии убить/освободить его оттуда, поэтому я сделал звуковой клип, объект MediaPlayer, публичный и статический, похожий на то, как в системе.out является общедоступным статическим объектом. Бытие новый для Android dev, но не новый для Java dev, я сделал это таким образом.

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;

public class Splash extends Activity {

    public static MediaPlayer ourSong; // <----- Created the object to be shared
                                        // this way

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        ourSong = MediaPlayer.create(Splash.this, R.raw.dubstep);
        ourSong.start();
        Thread timer = new Thread() {
            public void run() {
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    Intent openStartingPoint = new Intent(
                            "expectusafterlun.ch.androidtutorial.MENU");
                    startActivity(openStartingPoint);
                }
            }
        };
        timer.start();
    }
}

затем из следующего действия или любого другого действия я мог получить доступ к этому объекту MediaPlayer.

public class Menu extends ListActivity {

    String activities[] = { "Count", "TextPlay", "Email", "Camera", "example4",
            "example5", "example6" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(Menu.this,
                android.R.layout.simple_expandable_list_item_1, activities));
    }

    @Override
    protected void onPause() {
        super.onPause();
        Splash.ourSong.release(); // <----- Accessing data from another Activity
                                    // here
    }

}