Android 如何在Bundle中添加字符串-整数对?

Android 如何在Bundle中添加字符串-整数对?,android,bundle,Android,Bundle,我曾经这样使用过,但它不起作用。 我想将字符串存储为键,整数存储为值,通过调用getInt()我应该得到该整数值,根据单击列表项,该整数值可用于动态调用。我已经发布了我的代码 public class MainActivity extends Activity { ListView emrcontact; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

我曾经这样使用过,但它不起作用。 我想将字符串存储为键,整数存储为值,通过调用getInt()我应该得到该整数值,根据单击列表项,该整数值可用于动态调用。我已经发布了我的代码

public class MainActivity extends Activity {

ListView emrcontact;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    emrcontact=(ListView) findViewById(R.id.listView1);

    final String[] emergency={"Local Police", "Fire Service", "Ambulance", "Blood Bank", "Womens Helpline", "Child Helpline", "Indian Railways"};
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,emergency);
    emrcontact.setAdapter(adapter);





    emrcontact.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                long arg3) {

            Bundle dataBundle=new Bundle();
            dataBundle.putInt("Local Police",100);
            dataBundle.putInt("Fire Service",101);
            dataBundle.putInt("Ambulance",102);
            dataBundle.putInt("Blood Bank",104);
            dataBundle.putInt("Womens Helpline",181);
            dataBundle.putInt("Child Helpline",1098);
            dataBundle.putInt("Indian Railways",1322);
            Intent dataIntent = new Intent();
            dataIntent.putExtras(dataBundle);

            Bundle b=getIntent().getExtras();

            switch (pos) {

            case 0:
                if(b!=null) 
                {
                callToemrcontact(b.getInt("Local Police"));
                }
                break;

            case 1:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Fire Service"));
                }
                break;

            case 2:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Ambulance"));
                }
                break;

            case 3:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Blood Bank"));
                }
                break;

            case 4:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Womens Helpline"));
                }
                break;

            case 5:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Child Helpline"));
                }
                break;

            case 6:

                if(b!=null) 
                {
                callToemrcontact(b.getInt("Indian Railways"));
                }
                break;

            default:
                break;
            }


        }
    });




}
void callToemrcontact(int i)
{
     Intent intent=new Intent(Intent.ACTION_DIAL);
     intent.setData(Uri.parse("tel:"+"i"));
     startActivity(intent);
}
}
公共类MainActivity扩展活动{
列表视图emrcontact;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
emrcontact=(ListView)findViewById(R.id.listView1);
最后字符串[]紧急情况={“当地警察”、“消防队”、“救护车”、“血库”、“妇女热线”、“儿童热线”、“印度铁路”};
ArrayAdapter=新的ArrayAdapter(MainActivity.this,android.R.layout.simple\u list\u item\u 1,emergency);
emrcontact.setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(适配器视图arg0、视图arg1、内部位置、,
长arg3){
Bundle-dataBundle=新Bundle();
dataBundle.putInt(“当地警察”,100);
数据绑定。putInt(“消防服务”,101);
数据包,putInt(“救护车”,102);
dataBundle.putInt(“血库”,104);
dataBundle.putInt(“妇女热线”,181);
dataBundle.putInt(“儿童热线”,1098);
dataBundle.putInt(“印度铁路”,1322年);
Intent dataIntent=新Intent();
dataIntent.putExtras(dataBundle);
Bundle b=getIntent().getExtras();
开关(pos){
案例0:
如果(b!=null)
{
电话联系(b.getInt(“当地警察”);
}
打破
案例1:
如果(b!=null)
{
致电MRContact(b.getInt(“消防服务”);
}
打破
案例2:
如果(b!=null)
{
电话联系(b.getInt(“救护车”);
}
打破
案例3:
如果(b!=null)
{
致电MRContact(b.getInt(“血库”);
}
打破
案例4:
如果(b!=null)
{
callToemrcontact(b.getInt(“妇女热线”);
}
打破
案例5:
如果(b!=null)
{
callToemrcontact(b.getInt(“儿童热线”);
}
打破
案例6:
如果(b!=null)
{
Calltoemr联系人(b.getInt(“印度铁路”));
}
打破
违约:
打破
}
}
});
}
无效callToemrcontact(int i)
{
意向意向=新意向(意向.行动拨号);
setData(Uri.parse(“tel:”+“i”);
星触觉(意向);
}
}
logcat结果如下:

10-08 06:20:25.407: E/Trace(805): error opening trace file: No such file or directory (2)
10-08 06:20:25.967: D/dalvikvm(805): GC_FOR_ALLOC freed 58K, 8% free 2442K/2640K, paused 44ms, total 52ms
10-08 06:20:26.017: I/dalvikvm-heap(805): Grow heap (frag case) to 4.767MB for 2359312-byte allocation
10-08 06:20:26.107: D/dalvikvm(805): GC_FOR_ALLOC freed 2K, 5% free 4743K/4948K, paused 83ms, total 83ms
10-08 06:20:26.227: D/dalvikvm(805): GC_CONCURRENT freed <1K, 5% free 4743K/4948K, paused 5ms+4ms, total 119ms
10-08 06:20:26.467: D/dalvikvm(805): GC_CONCURRENT freed 2305K, 45% free 3115K/5616K, paused 20ms+25ms, total 79ms
10-08 06:20:26.737: D/libEGL(805): loaded /system/lib/egl/libEGL_emulation.so
10-08 06:20:26.747: D/(805): HostConnection::get() New Host Connection established 0x2a148e68, tid 805
10-08 06:20:26.777: D/libEGL(805): loaded /system/lib/egl/libGLESv1_CM_emulation.so
10-08 06:20:26.797: D/libEGL(805): loaded /system/lib/egl/libGLESv2_emulation.so
10-08 06:20:26.877: W/EGL_emulation(805): eglSurfaceAttrib not implemented
10-08 06:20:26.897: D/OpenGLRenderer(805): Enabling debug mode 0
10-08 06:20:25.407:E/Trace(805):打开跟踪文件时出错:没有这样的文件或目录(2)
10-08 06:20:25.967:D/dalvikvm(805):释放58K,8%释放2442K/2640K,暂停44ms,总计52ms
10-08 06:20:26.017:I/dalvikvm堆(805):为2359312字节分配将堆(frag案例)增长到4.767MB
10-08 06:20:26.107:D/dalvikvm(805):释放2K的所有,5%的自由4743K/4948K,暂停83ms,总计83ms

10-08 06:20:26.227:D/dalvikvm(805):GC_你可以这样说:

dataBundle.putString("Ambulance",String.valueOf(YourInt));
....
....
Bundle b=getIntent().getExtras();
String temp = b.getString("Ambulance");

int myInt = Integer.parseInt(temp);

你可以这样说:

dataBundle.putString("Ambulance",String.valueOf(YourInt));
....
....
Bundle b=getIntent().getExtras();
String temp = b.getString("Ambulance");

int myInt = Integer.parseInt(temp);

你必须这样做 在片段A中

        `Bundle dataBundle=new Bundle();
        dataBundle.putInt("Local Police",100);
        dataBundle.putInt("Fire Service",101);`
在执行片段事务之前,请确保将包传递给fragment.setArguments(bundle)
在片段B中

        `Bundle dataBundle=getArguments();
        dataBundle.getInt("Local Police");
        dataBundle.getInt("Fire Service");`

你必须这样做 在片段A中

        `Bundle dataBundle=new Bundle();
        dataBundle.putInt("Local Police",100);
        dataBundle.putInt("Fire Service",101);`
在执行片段事务之前,请确保将包传递给fragment.setArguments(bundle)
在片段B中

        `Bundle dataBundle=getArguments();
        dataBundle.getInt("Local Police");
        dataBundle.getInt("Fire Service");`


您需要使用
dataBundle
变量,而不是
b
b=getIntent()。getExtras()
将为您提供mainactivity收到的来自intent的捆绑包,而不是您创建的捆绑包

您需要使用
dataBundle
变量,而不是
b
b=getIntent()。getExtras()
将为您提供mainactivity收到的来自intent的捆绑包,而不是您创建的捆绑包

您是否在同一活动中使用上述代码?如果您在片段之间传递数据,请使用捆绑包。如果在活动之间传递数据,则发送意图。@KaranMer Ya我在同一活动中使用这些代码。@war\u Hero我在同一活动中使用这些代码。我是Android应用程序开发的初学者,所以我不知道片段。我已经发布了代码,您可以从中了解到我使用Bundle.In intent.setData(Uri.parse(“tel:“+”I”);,为什么i在引号中?您是否在同一活动中使用上述代码?如果您在片段之间传递数据,请使用bundle。如果在活动之间传递数据,则发送意图。@KaranMer Ya我在同一活动中使用这些代码。@war\u Hero我在同一活动中使用这些代码。我是Android应用程序开发的初学者,所以我不知道片段。我已经发布了代码,您可以从中了解到我使用Bundle.In intent.setData(Uri.parse(“tel:“+”I”);,为什么i在引号中?Bundle有一个putInt方法,它更适合这种需要。此方法有效,但涉及不必要的转换。@chitti能否请您更详细地回答此问题。请查看war_Hero的答案。Bundle有一个putin方法,更适合此需要。此方法有效,但涉及不必要的转换。@chitti能否请您详细回答此问题。请查看war_Hero的答案。现在,我将b替换为dataBundle。但它仍然不起作用。我的要求是通过调用getInt将字符串和整数作为键和值对存储在Bundle中(