Android: переключение между двумя действиями и обмен информацией между ними - PullRequest
3 голосов
/ 19 октября 2011

Это основной вопрос, но мне нужна помощь с ним.

У меня есть два вида деятельности: actA, actB. В то время как в actA я хочу запустить actB и дать ему строку, чем я хочу завершить actB и вернуть другую строку в actA (я не хочу переходить к onCreate () из actA, я бы скорее вернул это значение некоторым метод в actA, поэтому он может использовать строку из actB.

Помощь приветствуется

Ответы [ 4 ]

3 голосов
/ 19 октября 2011
From A.java:
Intent myintentB=new Intent(A.this, B.class).putExtra("<StringName>", "Value");
    startActivityForResult(myintentB, 3);

    from B.java:

    Intent myintentA=new Intent(B.this, A.class).putExtra("<StringName>", "Value"); 
    finish();
    setResult(3, myintentA);


    In A.java
@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            super.onActivityResult(requestCode, resultCode, data);
            String result_string=data.getStringExtra("<StringName>");
        }
2 голосов
/ 19 октября 2011

В операции A:

Intent intent = new Intent();
intent.setClass (getApplicationContext(), ActB.class) ;
intent.putExtra ("data1","NEW STRING") ;
context.startActivityForResult(intent) ;

В операции B (метод onCreate):

Intent intent = getIntent() ;
if (intent.hasExtra("data1") )
String dataSent = intent.getStringExtra("data1") ;

При отправке данных обратно:

Intent intent = new Intent() ;
intent.putExtra ("Return" , "RETURN STRING") ;
setResult(RESULT_OK, intent) ;
finish() ;

В операции A: (onActivityResult) [Вам необходимо переопределить]

if (data.hasExtra("Return"))
String data1 = data.getStringExtra("Return");
0 голосов
/ 19 октября 2011

ответ на вопрос, связанный ниже, также описывает ту же проблему, которую вы ищете

Как извлечь строку из пакета в onResume ()?

0 голосов
/ 19 октября 2011

Что касается вашей первой проблемы, вы можете присвоить дополнительные значения новому Intent, используя метод intentname.putExtra("extravalue", value); перед тем, как создавать Intent. Затем вы можете прочитать это значение во вновь созданном действии. Я знаю, что довольно ужасно объясняю, но я надеюсь, что вы поняли идею из этого кода, который я взял из приложения, которое я сделал.

ListLinks.java:

            // Pass the value of the item URL to the linkviewer when a link is clicked
        Intent openLink = new Intent(this, LinkView.class);
        openLink.putExtra("url" , item.URL);
        startActivity(openLink);

LinkView.java

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.linkview);

    Bundle bun = getIntent().getExtras();
    String url = bun.getString("url");

Я не совсем уверен, как решить вашу вторую проблему, поэтому, к сожалению, я не могу помочь вам с этим, но я уверен, что кто-то другой мог бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...