我不明白这个针对Android Studio的培训代码

时间:2019-01-29 09:34:45

标签: android

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,则无法正常工作

4 个答案:

答案 0 :(得分:4)

IntentMap类似,这些变量的值是索引此映射的键。这些键不仅必须为非null,而且必须彼此不同。

引自Start another activity(重点是我):

  

putExtra()方法将EditText的值添加到意图中。一个Intent可以将数据类型作为键值对(称为 extras )进行传递。您的键是一个公共常量EXTRA_MESSAGE,因为下一个活动使用该键来检索文本值。最好使用应用程序的程序包名称作为前缀来定义意向附加项的键。 这可以确保键是唯一的,以防您的应用与其他应用进行交互。

答案 1 :(得分:1)

SIGNUP_EMAILSIGNUP_PASSWORD不是邮件和密码的默认值,它们是用于传递ang获取值的字符串键,因此它们不能是null

它们是公共常量,以便意图可以知道它们以获取值。

编辑:请注意,字符串已声明为final,因此以后不能再更改键,具有声明为final且值为null的属性应该会引起一个心理标记有点没用。

答案 2 :(得分:0)

当您要将数据从一个活动传递到另一个活动时,应使用intent.putExtra(name,data); 第一个参数是名称,第二个参数是您要发送的数据 您可以将任何想要的字符串用作name参数,但不能为null 在第二个活动中,您可以使用此代码通过以下代码从第一个活动中获取数据: intent.getStringExtra(name)

答案 3 :(得分:-1)

您可以使用任何唯一的字符串来映射值。空无效,但“空”有效。但请记住,对于两个不同的值,您还需要分配不同的键。 像这样:

    public static final String SIGNUP_EMAIL = "null";
    public static final String SIGNUP_PASSWORD = "Null";