2012-06-08 2 views
0

Я пытаюсь разобрать веб-сайт, который ищет контент1 или контент2, в зависимости от того, какая кнопка нажата. У меня есть алгоритм, который отлично работает, но меня попросили сделать его в двух классах. Надеюсь, это не заставит меня изменить весь мой алгоритм. Но, тем не менее, я беспокоюсь о передаче строковых параметров в новую активность, и я ее ненавидел.Передача параметра String с использованием Intent в Android

Я определил глобальные параметры:

String content1; 
String content2; 

Мне нужно, чтобы получить строку в EditText, чьи имена «namesurname» и «р»:

content1 = district.getText().toString(); 
content2 = namesurname.getText().toString(); 

У меня есть две кнопки, которые имеют слушателей:

search1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent search = new Intent(FirstActivity.this, SecondActivity.class); 
      search.putExtra("param_a", content1); 
        startActivity(search); 
     }    
    }); 
    search2.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent search = new Intent(AvukatParserActivity.this, ParserActivity.class); 
      search.putExtra("param_b", content2); 
     startActivity(search); 
     } 
    }); 

С этого момента появляется мой SecondActivity.class.

Я пытаюсь получить намерения в новой деятельности:

Intent search = getIntent(); 
    String location = search.getStringExtra("param_a"); 
    String name_surname = search.getStringExtra("param_b"); 

Вот как я просматриваю Content1:

Toast.makeText(this, location, Toast.LENGTH_LONG).show(); 

Это toastes утратившим, как Content2. Нет ошибок, никаких предупреждений. Я не понимаю, что я делаю неправильно. Заранее спасибо.

+0

где вы положили Content1 = district.getText() ToString(). –

+0

@DheereshSingh для первого класса, где мой EditText определен и добавлен в макет. –

+0

В основном, я хочу, чтобы вам нужно было получить данные из текста редактирования, когда вы нажали кнопку поиска1, как в anwser http://stackoverflow.com/a/10945312/804447 –

ответ

0
  1. каждый из слушателей поставить только одно значение в намерениях, а не как, а тост показывает только один из них.

  2. об этом коде:

    content1 = district.getText().toString(); 
    content2 = namesurname.getText().toString(); 
    

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

+1

отличное объяснение. спасибо. без применения методов getText() toString() внутри методов onClick() , значения content1 и content2 не изменяются, поэтому они инициализировали нуль до того, как я понял это благодаря Dheeresh Singh –

+0

Да, я не был уверен, что это была проблема, поэтому я написал несколько советов. Лучшим ключом к этой проблеме было что вы получаете нуль, но контент не может быть пустым, поскольку вы вызываете «toString», и нет смысла, что такой метод возвращает null. В любом случае, я отредактировал свой ответ, чтобы быть более понятным для других. –

+0

it имеет смысл на самом деле, потому что я не вызывал метод toString после того, как отредактировал EditText, чтобы он вызывал инициализированный. Когда я установил текст по умолчанию в EditText, значение null изменилось. –

1

Put эта линия

search1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      content1 = district.getText().toString(); //if district is gloaal and has been set in onCreate 
      Intent search = new Intent(FirstActivity.this, SecondActivity.class); 
      search.putExtra("param_a", content1); 
        startActivity(search); 
     }    
    }); 
+1

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

+0

проблема с лучшей вещью разрешена .... :) –

+0

сейчас у меня есть еще одна проблема:) Мне нужно написать значение content1 во втором классе в TextView. Я имею в виду, я хочу напечатать его с помощью TextView, а не с Toast. «процесс неожиданно прекратился», - говорит эмулятор. –

0

вы можете сделать

Bundle bundle=new Bundle();//make it global 
search1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      content1 = district.getText().toString(); //if district is gloaal and has been set in onCreate 
      Intent search = new Intent(FirstActivity.this, SecondActivity.class); 
      bundle.putString("param_a",content1); 
      search.putExtras(bundle); 
        startActivity(search); 
     }    
    }); 
search2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      content2 = namesurname.getText().toString(); //if district is gloaal and has been set in onCreate 
      Intent search = new Intent(FirstActivity.this, SecondActivity.class); 
      bundle.putString("param_b",content2); 
      search.putExtras(bundle); 
        startActivity(search); 
     }    
    }); 

во второй активности OnCreate

Budle bundle=this.getIntent().getExtras(); 

String username=bundle.getString("param_b"); 
String location=bundle.getString("param_a"); 
Смежные вопросы