【问题标题】:How do I get a value from a selected Spinner item that loads a ListPreference?如何从加载 ListPreference 的选定 Spinner 项中获取值?
【发布时间】:2015-02-06 05:56:04
【问题描述】:

这就是我的情况……

我有一个带停车区的微调器……1 区、2 区等。

我想要做什么:当用户单击“发送 SMS 消息”按钮时,该按钮应将停车区电话号码加载到 SMS 消息中。停车区编号取决于从微调器中选择的停车区。


我完全编辑了我最初的问题...所以我有...

带停车区的微调器:

final Spinner spinner_zona = (Spinner) findViewById(R.id.spinnerZona);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
            this, R.array.zone, android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(
            android.R.layout.simple_spinner_dropdown_item);
    spinner_zona.setAdapter(adapter2);

带有停车区电话号码的 spinnerPrefs:

<resources>
<string-array name="spinnerZone_postavke">
    <item>700101</item>
    <item>700102</item>
    <item>700103</item>
    <item>700105</item>
    <item>700104</item>
</string-array>

在 SharedPreferences 中存储和检索电话号码:

 public static boolean setPreferences(Context c, String key, String value) {
    SharedPreferences settings = c.getSharedPreferences("com.example.igor.parkingzagreb.Preferences", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(key, value);
    return editor.commit();


}

public static String getPreference(Context c, String key) {
    SharedPreferences settings = c.getSharedPreferences("com.example.igor.parkingzagreb.Preferences", Context.MODE_PRIVATE);
    String value = settings.getString(key, "");
    return value;

我在正确的轨道上吗?为了通过按钮点击将这些电话号码推送到 SMS 消息,下一步是什么?

非常感谢。

【问题讨论】:

  • 也许你可以放一个带有名字-电话号码的Hashmap,然后通过spinner name搜索电话
  • @D4rWinS 我用你的建议更新了 OP。你能检查一下吗?谢谢。
  • @IgorGajic 你把电话号码放在哪里了?
  • @iRuth 在 values 文件夹中,spinnerPrefs.xml 文件作为字符串数组中的项目。
  • @IgorGajic 请发布包含Spinner 以及spinnerPrefs.xml 的活动源代码。

标签: android button spinner listpreference


【解决方案1】:

在您的Buttons onClick 方法中,您可以实现SmsManager,如下所示。

您可以使用 SmsManager API:

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNumber", null, "message", null, null);

或者,您可以使用内置的 SMS 应用程序:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

使用 SmsManager API 方法需要权限:

<uses-permission android:name="android.permission.SEND_SMS" />

在您的Buttons onClick 方法中使用SmsManager 的示例:

@Override
public void onClick(View v) {

    //Fetch your selected zone from the spinner
    String zone = spinner_zona.getSelectedItem().toString();

    //Set the receipt phone number here, e.g. from SharedPreferences
    String phoneNo = "yourPhoneNumber"      

    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, zone, null, null);
        Toast.makeText(getApplicationContext(), "SMS Sent!",
                    Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(),
            "SMS faild, please try again later!",
            Toast.LENGTH_LONG).show();
        e.printStackTrace();
    }

}

了解更多详情here

【讨论】:

  • 神奇的东西@Marcus。我没有提到一件事。用户应在 EditText 中输入他的 Regplate 号码,然后通过 Send SMS 按钮发送 SMS。我怎样才能做到这一点?我的意思是,对于像我这样的初学者来说,这可能是一个复杂的问题,但我需要以某种方式学习......谢谢。
  • 你改变 spinner_zona.getSelectedItem().toString();到 your_edit_text.getText().toString();在你的点击。与获取微调器的值时相同。希望这会有所帮助,如果有帮助,请将其标记为已接受的答案:-) @Igor Gajic
  • @Marcus 感谢您的帮助和您的时间 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 2017-07-28
相关资源
最近更新 更多