首页 > 解决方案 > 我不明白这个 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,则不起作用

标签: android

解决方案


Intent与 类似Map,这些变量的值是索引这张地图的键。不仅这些键必须是非空的,而且它们必须彼此不同。

引自开始另一个活动(强调我的):

putExtra()方法将EditText' 值添加到意图中。Intent 可以将数据类型作为键值对携带,称为extras。您的密钥是一个公共常量EXTRA_MESSAGE,因为下一个活动使用该密钥来检索文本值。使用应用程序的包名称作为前缀来定义 Intent Extras 的键是一种很好的做法。这样可以确保密钥是唯一的,以防您的应用与其他应用交互。


推荐阅读