0

私のコードフローは次のとおりです。

Reports => ReportsType

レポートには 3 つの項目があり、各項目をクリックすると、どの項目がクリックされたかを区別する目的ReportsTypeで、名前の付いたタグを渡すアクティビティを開始しています。name

問題は、OnCreate メソッドが 1 回だけ呼び出されることです。そのため、見出しは常に最初にクリックされた項目に設定されます。

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値を提供しています。

他のアクティビティで現在クリックされているアイテムのインテント値を取得する方法は?

アップデート:

レポート アクティビティ コード:

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

}

showReport()3 つの項目のいずれかをクリックすると、各項目が呼び出されます。

アップデート:

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" />
4

2 に答える 2

2

最後に、呼び出されたアクティビティで古いインテント値を次のように設定することで解決しました-

@Override
    public void onNewIntent (Intent intent)
    {
        super.onNewIntent(intent);
        setIntent(intent);
    }

onResume()次に、呼び出し時に古いインテント値を取得します-

@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);   
    }
于 2013-04-11T08:47:36.153 に答える