1

そのコードで複数の連絡先を選択することを参照して CustomMultiAutoCompleteTextView を使用して複数の連絡先をthis選択していますが、トーストメッセージで選択されている番号を表示したいと思います。そのボタンがクリックされたとき、私はそのコードを変更しましたmain.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <com.krishna.widget.CustomMultiAutoCompleteTextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText" 
        android:textColor="@android:color/black"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:text="Button" />

</LinearLayout>

そして、私はこのフィールドをCustomMultiAutoCompleteTextView.java

public HashMap<String, String> con=new HashMap<String, String>();

これに連絡先番号を保存するためHashmap

で改造しました

CustomMultiAutoCompleteTextView.java


public void init(Context context){


....

this.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
    
...
con.put(contact.num.toString(), contact.contactName.toString());
}
});
       
    }
and i modified 
MainActivity.java

このような

public class MainActivity extends Activity implements OnClickListener{
    Button b1;
    private CustomMultiAutoCompleteTextView phoneNum;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        phoneNum = (CustomMultiAutoCompleteTextView)
                findViewById(R.id.editText);
        ContactPickerAdapter contactPickerAdapter = new ContactPickerAdapter(this,
                android.R.layout.simple_list_item_1, SmsUtil.getContacts(
                    this, false));
        phoneNum.setAdapter(contactPickerAdapter);
        b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener((OnClickListener) this);
        //phoneNum.addTextChangedListener((TextWatcher));
        }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        CustomMultiAutoCompleteTextView phoneNum=(CustomMultiAutoCompleteTextView)findViewById(R.id.editText);
        HashMap<String, String> map=(HashMap<String, String>)phoneNum.con;
        
        try{
            
            

            Toast.makeText(this, map.size(), Toast.LENGTH_LONG).show();
        }catch(Exception e)
        {
            Log.e("eee",e.toString());
        }
        
    }
    
    
    
    
    }

今アーター実行私はその後、1 つの連絡先を選択しました。ボタンを押している場合、unable to get map size() そこにいandroid.content.res.resources$notfoundexception string resource id #0x1 ます。このエラーが発生する理由を知ることができますか。メインアクティビティで選択された連絡先情報を取得する方法 任意のボディがこの問題を解決するのを手伝ってくれます

4

1 に答える 1

2

これを変える:

Toast.makeText(this, map.size(), Toast.LENGTH_LONG).show();

これに:

Toast.makeText(this, String.valueOf(map.size()), Toast.LENGTH_LONG).show();

には 2 つのバージョンがありToast.makeTextます。1 つは 2 番目のパラメーターが文字列で、もう 1 つは int リソース ID です。

あなたはそれにintを渡していますがmap.size()、それはリソースIDであると考えていますが、見つけることができません。したがって、あなたは得ていますandroid.content.res.resources.notfoundexception

于 2013-10-25T05:36:52.780 に答える