0

Я хочу неявно передать две строки или переменные из диалогового окна, которые будут использоваться другим действием и в то же время открыть эту активность.Передача строки или переменной из диалогового окна в действие Android

dialoguebox

String city = addresses.get(0).getLocality(); 
String category = "Hazard"; 

      AlertDialog.Builder prompt = new 
      AlertDialog.Builder(MapsActivity.this); 
      prompt.setCancelable(false) 
        .setPositiveButton("Mineralization", new 
      DialogInterface.OnClickListener() { 

        .setPositivetiveButton("Geohazard", new 
          DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
           int which) { 

            startActivity(new 
         Intent(getApplicationContext(),MapsActivity.class)); 

         //i want to pass the String city and category here 
           } 
          } 
        ) 





      AlertDialog alert = prompt.create(); 
      alert.setTitle("Please select an option"); 
      alert.show(); 

      TextView myTextView = (TextView) findViewById(R.id.PSString); 
      myTextView.setText(city); 

Новая активность

package com.example.boneyflesh.homepage; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class GeohazardResults extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_geohazard_results); 
    } 
} 

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

ответ

0

Вместо того, чтобы делать что-то вроде этого в методе OnClick

startActivity(new Intent(getApplicationContext(),MapsActivity.class)); 

Вы можете просто передать две строки через намерение к MapsActivity внутри вашего метода OnClick, как показано ниже

Intent lIntent = new Intent(getApplicationContext(), MapsActivity.class); 
lIntent.putExtra("city", city); 
lIntent.putExtra("category", category); 
startActivity(lIntent); 

и получить эти значения в MapsActivity, как показано ниже

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_geohazard_results); 
    String city = getIntent().getStringExtra("city"); 
    String category = getIntent().getStringExtra("category"); 
} 
+3

большое спасибо, спасибо. другие ответы также работают, но я выбрал это для явного и простого понимания для начинающих, таких как я. : thumbs-up: – Boneyflesh

+0

@Boneyflesh. Вы должны рассмотреть возможность опробовать полезные ответы (в дополнение к выбору «победителя») – theblitz

+1

@theblitz я выполнил их, но он говорит, что общественный статус изменится, как только моя репутация станет более 15 T_T. – Boneyflesh

0

Вместо того, чтобы делать это -:

startActivity(new Intent(getApplicationContext(),MapsActivity.class)); 

ли что-то подобное -:

Intent mapsActivityIntent = new Intent(getApplicationContext(), MapsActivity.class); 
mapsActivityIntent.putExtra("CITY", city); 
mapsActivityIntent.putExtra("CATEGORY", category); 
startActivity(mapsActivityIntent); 

В вашей деятельности вы можете получить их, выполнив:

getIntent().getStringExtra("CITY"); 
getIntent().getStringExtra("CATEGORY"); 
0

Pass Использование Intent и Bundle как показано ниже:

Intent intent = new Intent(getApplicationContext(),MapsActivity.class)); 
Bundle bundle =new Bundle(); 
bundle.putString("key1","value1"); 
bundle.putString("key2","value2"); 
intent.putExtras(bundle); 
startActivity(intent); 

и получить значение в следующей деятельности, как показано ниже:

Bundle bundle = getIntent().getExtras(); 
String value1= bundle.getString("key1"); 
String value2= bundle.getString("key2"); 
0

Вы должны использовать дополнительные услуги для отправки данных.

Например:

Intent intent = new Intent(getApplicationContext(),MapsActivity.class); 
intent.putExtra("SOME_NAME_HERE", theString); 
startActivity(intent); 

Затем в целевой активности вы пишете - в OnCreate:

Bundle extras = getIntent().getExtras(); 
if(extras == null) { 
    theString= null; 
} else { 
    theString = extras.getString("SOME_NAME_HERE"); 
} 
+0

Спасибо, это работает также – Boneyflesh

0

В вашем DialogBox:

Intent i = new Intent(MapsActivity.this, GeohazardResults.class); 
i.putExtra("city", city); 
i.putExtra("category", categoty); 
startActivity(i); 

В вашей новой деятельности:

Intent i = getIntent(); 
Bundle extras = i.getExtras(); 
String city = extras.getString("city"); 
String category = extras.getString("category"); 
0
DialogInterface.OnClickListener() { 
       .setPositivetiveButton("Geohazard", new 
         DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, 
          int which) { 
          Intent intent = new Intent(getApplicationContext(),MapsActivity.class)) 
          // intent.putExtra(key,value); 
          intent.putExtra("String1","value1"); 
          intent.putExtra("String2","value2"); 

          startActitvity(intent); 
          } 
         } 
       ) 

в Acivity

  Intent intent = getIntent(); 
      Bundle extras = intent.getExtras(); 
      if(extras != null){ 
      //intent.getStringExtra(key) 
      string1 = intent.getStringExtra("String1"); 
      string2 = intent.getStringExtra("String2"); 
      } 

я хотел бы предложить определить ключи как константы и использовать их при прохождении значения, чтобы избежать путаницы

0

проход умысел вашего диалога, как это

Intent intent=new Intent(context, GeohazardResults.class); 
     Bundle parameters=new Bundle(); 
     parameters.putString("city",city); 
     parameters.putString("category",category); 
     intent.putExtra("key",parameters); 
     startActivity(intent); 

и в следующем действии получите такие значения.

Intent receivedIntent=getIntent(); 
     if(receivedIntent!=null){ 
      Bundle parameters=receivedIntent.getBundleExtra("key"); 
      if(parameters!=null){ 
       String city=parameters.getString("city"); 
       String category=parameters.getString("category"); 
      } 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^