Android中的Bundle问题

Posted

技术标签:

【中文标题】Android中的Bundle问题【英文标题】:Issue with Bundle in android 【发布时间】:2010-11-25 12:13:20 【问题描述】:

我在 Bundle 中放置了一个字符串值(用户在我的搜索活动中输入的 Edittext)。然后我得到了 Bundle (Result-Activity) 来检查用户是否在没有任何价值的情况下离开了 Edittext。但它不起作用。如果语句有问题。好像什么都没检查。我调试并看到第一个“If”被执行,然后是“Else”。有人可以帮我吗?

搜索活动:

@Override
    protected void onCreate(Bundle savedInstanceState) 
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        mDbHelper = new SBooksDbAdapter(this);
        mDbHelper.open();
        setContentView(R.layout.sbooks_search); 

        mTextSearch = (EditText)findViewById(R.id.text_search);     
        searchButton = (Button)findViewById(R.id.btn_search);

        mTextSearch.setFocusableInTouchMode(true);
        mTextSearch.setHint(R.string.button_hint);

        searchButton.setOnClickListener(new View.OnClickListener()
            public void onClick(View v)        
                    startSearch();                                  
            
        );
    
    // Start Activity Search Result
    public void startSearch()                  
        Bundle bundle = new Bundle();       
        bundle.putString(SBooksDbAdapter.KEY_TITLE_RAW, mTextSearch.getText().toString());

        Intent intentSearch = new Intent(this, SBooksSearchResult.class);
        intentSearch.putExtras(bundle);     
        this.startActivity(intentSearch);           
    

结果-活动:

Bundle bundle = getIntent().getExtras();        
    String searchText = bundle.getString(SBooksDbAdapter.KEY_TITLE_RAW);        

    if(searchText != "")
    
        // Do nothing           
    
    else   
        searchText = "Hello" ;
    

【问题讨论】:

1.您可以在 Intent 上调用 getStringExtra() —— 您无需调用 getExtras() 之后再调用 getString()。 2. 缺少的 Bundle 值从 getString() 返回 null,而不是 ""。 3. 您可能希望在调用 putExtra() 的位置发布代码以将值存储在 Intent 中。如果没有它,也许还有其他代码,将很难为您提供帮助。 嗨,我在您评论时发布代码。还有一件事,我调试(太多次),发现searchText值是“”,而不是null。希望你能帮上忙! 【参考方案1】:

代替:

if (searchText != "")

尝试:

if (!searchText.equals(""))

【讨论】:

以上是关于Android中的Bundle问题的主要内容,如果未能解决你的问题,请参考以下文章

Android:无法保存和读取 Bundle 中的所有值

用于 android 开发的 adt-bundle 中的 Eclipse 通过自动完成冻结

OSGI Bundle 中的 Android Activity

简要分析Android中的Intent,Bundle,Parcel中的数据传递

简要分析Android中的Intent,Bundle,Parcel中的数据传递

Android中的IPC方式—— Bundle文件共享Messenger