android - 我不明白这个 android studio 的培训代码
问题描述
https://developer.android.com/training/basics/firstapp/starting-activity
public class MainActivity extends AppCompatActivity {
public static final String SIGNUP_EMAIL = "com.example.myapplication.SIGNUP_EMAIL";
public static final String SIGNUP_PASSWORD = "com.example.myapplication.SIGNUP_PASSWORD";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void signup(View view) {
Intent intent = new Intent(this, SignupResultActivity.class);
EditText signup_email = (EditText) findViewById(R.id.signup_email);
EditText signup_password = (EditText) findViewById(R.id.signup_password);
String email = signup_email.getText().toString();
String password = signup_password.getText().toString();
intent.putExtra(SIGNUP_EMAIL, email);
intent.putExtra(SIGNUP_PASSWORD, password);
startActivity(intent);
}
}
public static final String SIGNUP_EMAIL = null;
public static final String SIGNUP_PASSWORD = null;
为什么不应该在这段代码中使用“null”?
如果您输入 SIGNUP_EMAIL=null 和 SIGNUP_PASSWORD=null,则不起作用
解决方案
Intent
与 类似Map
,这些变量的值是索引这张地图的键。不仅这些键必须是非空的,而且它们必须彼此不同。
引自开始另一个活动(强调我的):
该
putExtra()
方法将EditText
' 值添加到意图中。Intent 可以将数据类型作为键值对携带,称为extras。您的密钥是一个公共常量EXTRA_MESSAGE
,因为下一个活动使用该密钥来检索文本值。使用应用程序的包名称作为前缀来定义 Intent Extras 的键是一种很好的做法。这样可以确保密钥是唯一的,以防您的应用与其他应用交互。
推荐阅读
- php - 在 docker-compose 中自动运行工匠命令的正确方法
- powerbi - DAX 如何获取行号值
- haskell - 在类似 Map 的结构中将列表列表与命名索引相结合
- jupyter-notebook - 在 Jupyter Notebook 中执行单元之前设置时间延迟
- python - 如何在openpyxl中获取值以及单元格编号?
- docker - Docker:无法访问 Minio Web 浏览器
- ros - 如何订阅“/scan”主题,修改消息并再次发布到“/scan”主题?
- css - 无法使用 css 删除/隐藏 Div 类
- python - 如何在 tkinter gui 应用程序中制作多个页面?
- ios - 如何使导航栏透明?