我有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。
答案 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;);
你会得到字符串;