putExtra()不适用于Button:onClick

时间:2017-09-12 10:27:03

标签: java android android-intent onclick

我有2个活动,我尝试将值从第一个放到第二个。在第一个活动中,我创建了一个带有onClick参数的按钮。

<Button
    android:id="@+id/naviButton"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:text="navigate"
    android:layout_alignParentBottom="true"
    android:onClick="startNavigation"/>

然后我在Activity SelectedDock中创建了2个方法:onCreate和startNavigation

public void startNavigation (View view) {
    Intent GPSintent = new Intent(SelectedDock.this, GPSActivity.class);
    String XCorValue = "What's wrong with you?!";
    GPSintent.putExtra("SelectedXCor", XCorValue);
    startActivity(GPSintent);

在GPSActivity中我有:

public class GPSActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gps);
    TextView XCorTV = (TextView) findViewById(R.id.textView2);
    XCorTV.setText(getIntent().getExtras().getString("SelectedXcor"));
}
}

在我的应用程序中,我什么也看不见。任何文字。如果我删除.setText,我可以看到TextView的默认值。我使用了一个教程,一个简单的代码可以工作,但对我来说..不是。怎么了? 我必须补充一点,在我的项目中,SelectedDock是第三个Activity,对于第一个和第二个,我也使用了Intent。

3 个答案:

答案 0 :(得分:1)

您通过 SelectedXCor 作为putExtra中的密钥和 SelectedXcor 使用不同的密钥检索,这是您不检索数据的原因

只需更改此XCorTV.setText(getIntent().getExtras().getString("SelectedXCor")); }

即可

示例代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gps);
    TextView XCorTV = (TextView) findViewById(R.id.textView2);
    XCorTV.setText(getIntent().getExtras().getString("SelectedXCor"));
}

答案 1 :(得分:0)

GPSintent.putExtra("SelectedXCor", XCorValue);

XCorTV.setText(getIntent().getExtras().getString("SelectedXcor"));

而不是硬编码&#34; SelectedXCor&#34;,使用不同类中的最终静态变量,以便您可以在整个应用程序中使用该变量,从而最大限度地减少此类错误。

创建一个名为&#34; IntentKeys&#34;并声明一个变量

public static final String KEYCORE = "SelectedXCor";

现在可以在任何地方使用,

GPSintent.putExtra(IntentKeys.KEYCORE, XCorValue);

XCorTV.setText(getIntent().getExtras().getString(IntentKeys.KEYCORE));

答案 2 :(得分:0)

getIntent()。getExtras。给你一个捆绑包。

试试这个,getIntent()。getStringExtra(&#34; SelectedXCor&#34;);

你会得到字符串;