2013-04-09 2 views
0

Моего потока кода:же значение элемента при обращении с getIntent() в другой деятельности

Reports => ReportsType

доклады с 3 пунктами и по щелчку каждого пункта, я начинаю деятельность ReportsType проходящее тег с именем name с намерением отличить, какой элемент был нажат.

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

public void onCreate(Bundle si) 
    { 
     Intent intent = getIntent(); 
     heading = intent.getExtras().getString("name"); //this tells which item was clicked. 
     TextView heading_txt = (TextView) findViewById(R.id.heading); 
     heading_txt.setText(heading); 
    } 

Я пытался поставить этот код на onResume() вызов, потому что это называется каждый раз активность возобновляется. Но все же getIntent() дает старое значение name, установленное из предыдущего элемента.

Как получить текущее значение намерения целевого объекта в другом действии?

UPDATE:

Отчеты Код деятельности:

public void showReport(View v) { 
    String tag = v.getTag().toString(); 
    Intent i5 = new Intent(this, ReportsType.class); 
    i5.putExtra("name", tag); 
    startActivity(i5); 

} 

Где showReport() метод вызывается каждый элемент, щелкните любой из трех элементов.

UPDATE:

goBackReport код

public void goBackReport(View v) 
    { 

    Intent intent = new Intent(ReportsType.this, Reports.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
     startActivity(intent); 
     finish(); 
    } 

вид кнопки XML

<Button 
     android:id="@+id/entry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/btn_blue_xml" 
     android:clickable="true" 
     android:padding="8dp" 
     android:onClick="goBackReport" 
     android:text="Back" 
     android:textColor="#ffffff" 
     android:textSize="15dp" /> 
+0

Опубликовать свой отчет Код активности слишком –

+0

Я понял ваш вопрос, но у меня есть сомнение относительно проблемы. Проблема заключается в том, что метод OnCreate вызывается только один раз, поэтому заголовок всегда задан для того, какой элемент был нажат в начале. Кнопка назад? – Pragnani

+0

Убедитесь, что вы передали правильный вид в ShowReport(), и тег отличается для каждого вида. –

ответ

2

Наконец решено путем установки старого намерения значения в вызываемой деятельности как this-

Тогда получение старых значений намерений в onResume() call-

@Override 
    public void onResume() 
    { 
     super.onResume(); 
     Intent intent = getIntent(); 
     heading = intent.getExtras().getString("name"); 
     TextView heading_txt = (TextView) findViewById(R.id.heading); 
     heading_txt.setText(heading); 
    } 
0

попробовать, как в вашей второй Activity

if (getIntent().getExtras() != null) { 
     String mstr = getIntent().getExtras().getString("yourkey");    
     } 

и код

 Intent intent = getIntent(); 
     heading = intent.getExtras().getString("name"); //this tells which item was clicked. 
     TextView heading_txt = (TextView) findViewById(R.id.heading); 
     heading_txt.setText(heading); 

положить в onItemclick, где это не нужно в onCreate