Подтвердить что ты не робот

Передача данных из одной активности в другую с помощью пакета - не отображение во второй активности

В настоящее время я пытаюсь получить данные, полученные с помощью вызова REST API, проанализировать его для необходимой мне информации и затем передать эту информацию в новое действие. Я использую Asynchronous HTTP Client из loopj.com для клиента REST, а затем используя приведенный ниже код для onClick и onCreate для текущей и будущей деятельности, соответственно.

Eclipse не передает мне никаких ошибок для моего кода, но когда я пытаюсь запустить эмулятор, я ничего не получаю (то есть пустой белый экран), когда открывается новый вид активности/представления. Я пробовал код с другим URL-адресом в моем REST CLIENT, но я все еще ничего не вижу. Я даже вынул API из уравнения, комментируя try/catch в onClick и меняя venueName в bundle.putString("VENUE_NAME", venueName); на searchTerm. Тем не менее, новый вид появляется, но ничего не отображается. Что не проходит, или что я забываю сделать, чтобы второе действие отображало venueName?

public void onClick(View view) {
    Intent i = new Intent(this, ResultsView.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String searchTerm = editText.getText().toString();


    //call the getFactualResults method
    try {
        getFactualResults(searchTerm);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    //Create the bundle
    Bundle bundle = new Bundle();
    //Add your data from getFactualResults method to bundle
    bundle.putString("VENUE_NAME", venueName);  
    //Add the bundle to the intent
    i.putExtras(bundle);

    //Fire the second activity
    startActivity(i);
}

Метод во второй активности, который должен получить намерение и расслоение и отобразить его:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Get the message from the intent
    //Intent intent = getIntent();
    //String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    //Get the bundle
    Bundle bundle = getIntent().getExtras();

    //Extract the data…
    String venName = bundle.getString(MainActivity.VENUE_NAME);        

    //Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(venName);

    //set the text view as the activity layout
    setContentView(textView);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

Спасибо за вашу помощь. Очень ценится.

4b9b3361

Ответ 1

Два способа отправки данных. Вот как вы его отправляете в данный момент. И нет ничего плохого в этом.

//Create the bundle
Bundle bundle = new Bundle();
//Add your data from getFactualResults method to bundle
bundle.putString("VENUE_NAME", venueName);
//Add the bundle to the intent
i.putExtras(bundle);
startActivity(i);

Однако в вашем коде (вторая активность) вы ссылаетесь на key в Bundle как MainActivity.VENUE_NAME, но ничего в коде не указывает, что у вас есть класс, который возвращает значение в качестве фактического key имени send с Bundle. Измените свой код во втором действии на это:

Bundle bundle = getIntent().getExtras();

//Extract the data…
String venName = bundle.getString("VENUE_NAME");        

//Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(venName);

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

if (bundle.containsKey(MainActivity.VENUE_NAME))    {
    ....
}

Ответ 2

Я думаю, если вы замените

String venName = bundle.getString(MainActivity.VENUE_NAME); 

с

String venName = bundle.getString("VENUE_NAME");

он должен работать.

Вот как я обрабатываю передачу данных из одной активности в другую:

Отправка данных в действие под названием "Projectviewoptions":

Bundle b = new Bundle();
          b.putString("id", str_projectid);
          Projectviewoptions pv = new Projectviewoptions();

Получение данных:

idbundle = getArguments();
String myid = idbundle.getString("id");

"Ключ" с обеих сторон должен быть таким же; в этом случае "id".

Другой способ отправить данные с помощью намерения:

Send:

Intent intent = new Intent(getActivity(),ViewProjectDetails.class);
                            intent.putExtra("id", myid);
                            startActivity(intent);

Recieve:

String id = getIntent().getExtras().getString("id");

Ответ 3

Вы ошибочно получаете доступ к ключу, который вы добавили в пакет. Помимо того, что String как MainActivity.VENUE_NAME попытается напрямую передать имя ключа, которое вы добавили в пучок, как показано ниже:

Помимо строки, как показано ниже:

   //Get the bundle
     Bundle bundle = getIntent().getExtras();
    //Extract the data…
   String venName = bundle.getString(MainActivity.VENUE_NAME);        

Попробуйте получить строку, используя имя ключа, как показано ниже:

    /Get the bundle
     Bundle bundle = getIntent().getExtras();
    //Extract the data…
   String venName = bundle.getString("VENUE_NAME");  

Ответ 4

отправить пакет.

Bundle bundle = new Bundle();
bundle.putString("Name",Object); //This is for a String
i.setClass(CurrentClass.this, Class.class);
i.putExtras(bundle);
startActivity(i);

чтобы получить пакет

Bundle bundle = null;
bundle = this.getIntent().getExtras();
String myString = bundle.getString("Name");//this is for String  

Ответ 5

Убедитесь, что строка, которую вы использовали в качестве ключа, чтобы поместить элемент в свой комплект, совпадает с ключом, используемым для его извлечения. В вашем случае, возможно, MainActivity.VENUE_NAME не совпадает с "VENUE_NAME"

Ответ 6

Intent loginIntent = new Intent(LoginActivity.this, HomeActivity.class);

Bundle bundle = new Bundle(); 


bundle.putString("user_id", userId);

i.putExtras(bundle);

startActivity(loginIntent);

LoginActivity.this.finish();

Ответ 7

Вы можете использовать этот код в первом упражнении:

 Intent i = new Intent(Context, your second.class);
        i.putExtra("key_value", "your object");
        startActivity(i);

и получить объект во второй деятельности:

 Intent in = getIntent();
    Bundle content = in.getExtras();
   // check null
        if (content != null) {
            String content = content_search.getString("key_value"); 
    }