麻烦将两个不同的意图传递给一个活动

时间:2011-10-31 05:46:20

标签: android

基本上我有一个屏幕可以添加或更新用户联系信息。问题是我必须使用相同的屏幕来做这两件事。

当用户选择“新”时,我只需传递这样的意图:

newButton.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View arg0) {
                Intent intent = new Intent(ContactProjectActivity.this, AddContact.class);
                startActivity(intent);  
            }
        });

从单独的活动中,当用户选择“编辑”时,我会像这样传递意图:

edit.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View arg0) {
            Intent intent = new Intent(ContactView.this, AddContact.class);
            intent.putExtra("name",personName.getText().toString());
            startActivity(intent);
        }

});

在新建/编辑页面上,我有以下代码:

final Bundle extras = getIntent().getExtras();
        String searchTerm = extras.getString("name");

        if (extras.size() > 0) {
            int index = searchTerm.indexOf(' ');
            final String fName = searchTerm.substring(0, index);
            final String lName = searchTerm.substring(index + 1, searchTerm.length());

使用此代码,我正在检查哪些活动即将进入我的页面。如果我有信息传递给我,我知道我应该编辑数据。

问题是,当我在ContactProjectActivity类中单击newButton时,我的程序崩溃了。

3 个答案:

答案 0 :(得分:1)

在新建/编辑页面上,只需检查您是否获得了额外内容。

if(extras!=null)
{
   String searchTerm = extras.getString("name");
}

答案 1 :(得分:1)

在你的AddContact.class中,你应该使用:

String searchTerm="";
if(getIntent().hasExtra("name"))
     searchTerm= getIntent().getStringExtra("name");

而不是使用

final Bundle extras = getIntent().getExtras();
String searchTerm = extras.getString("name");

答案 2 :(得分:0)

使用Intent的boolean hasExtra(String name)方法检查您是否有额外内容。