【问题标题】:starting an intent using spinner and message in edittext在edittext中使用微调器和消息启动意图
【发布时间】:2013-06-07 10:07:18
【问题描述】:

我想制作一个从 EDITTEXT 获取价值的小应用程序,当单击 BUTTON 时在 SPINNER 中执行一个操作(定义为微调器项)... onclick 操作是 sendMessage(View view)...有人可以告诉我如何编写这段代码..到目前为止我得到了这么多

public class MainActivity extends Activity implements OnItemSelectedListener{


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

      addItemsOnSpinner();

}

  public void addItemsOnSpinner() {

Spinner spinner=(Spinner)findViewById(R.id.selection_spinner);
ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.selection_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
  }
  public void sendMessage(View view) {
     EditText edittext=(EditText) findViewById(R.id.edit_message);
    String message= edittext.getText().toString();

  public void onItemSelected(AdapterView<?> parent, View view,int pos, long id) {


        Spinner spinner=(Spinner)findViewById(R.id.selection_spinner);
        String select=spinner.getSelectedItem().toString();
       if(select.equals("Call")){
        System.out.println(select);
        // Build the intent(Call)
        Uri number = Uri.parse(message);
        Intent callIntent = new Intent(Intent.ACTION_CALL, number);

        // Verify it resolves
        PackageManager packageManager = getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivities(callIntent, 0);
        boolean isIntentSafe = activities.size() > 0;

        // Start an activity if it's safe
        if (isIntentSafe) {
            startActivity(callIntent);
        }
       }
        if(select.equalsIgnoreCase("E-Mail to")){
            Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(intent, 0);
        }
        Toast.makeText(MainActivity.this, "The value selected is" + select, Toast.LENGTH_LONG).show();
        Toast.makeText(MainActivity.this, "The position is" +pos, Toast.LENGTH_LONG).show();
  }
  }
    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode== 0){
                try{
                        if(resultCode==Activity.RESULT_OK){    
                            Uri contactData = data.getData();
                            Cursor c = getContentResolver().query(contactData, null, null, null, null);

                            // has result
                            if (c.moveToFirst()) {
                                String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                                String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                                Toast.makeText(MainActivity.this, "The name is" +name, Toast.LENGTH_LONG).show();
                                Toast.makeText(MainActivity.this, "The id is" + id, Toast.LENGTH_LONG).show();
                                // new query for the mail
                                Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);

                                 //has result
                                if(emailCursor.moveToFirst()) {
                                    String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                                    String emailType = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                                    Toast.makeText(MainActivity.this, "The email is" +email, Toast.LENGTH_LONG).show();
                                   Toast.makeText(MainActivity.this, "The emailtype is" +emailType, Toast.LENGTH_SHORT).show();

                                }

                                emailCursor.close();
                            }

                            c.close();
                        }

                }
                 catch(Exception e){
                 e.getCause();
                 }        
                }
                }

【问题讨论】:

    标签: android android-intent android-spinner android-button


    【解决方案1】:

    您不能将一个函数放在另一个函数中。您的 onItemSelected 函数必须是 outside sendMessage。

    此外,如果您只希望在单击 Button 时选择项目,则不需要 OnItemSelectedListener。

    这就是我要做的(基于您的代码):

    public class MainActivity extends Activity{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            addItemsOnSpinner();
    
        }
    
        public void addItemsOnSpinner() {
    
            Spinner spinner=(Spinner)findViewById(R.id.selection_spinner);
            ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.selection_array, android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
        }
    
        public void sendMessage(View view) {
            EditText edittext=(EditText) findViewById(R.id.edit_message);
            String message= edittext.getText().toString();
                Spinner spinner=(Spinner)findViewById(R.id.selection_spinner);
            String select=spinner.getSelectedItem().toString();
    
            if(select.equals("Call")){
                System.out.println(select);
                // Build the intent(Call)
                Uri number = Uri.parse(message);
                Intent callIntent = new Intent(Intent.ACTION_CALL, number);
    
                // Verify it resolves
                PackageManager packageManager = getPackageManager();
                List<ResolveInfo> activities = packageManager.queryIntentActivities(callIntent, 0);
                boolean isIntentSafe = activities.size() > 0;
    
                // Start an activity if it's safe
                if (isIntentSafe) {
                    startActivity(callIntent);
                }
            }
            if(select.equalsIgnoreCase("E-Mail to")){
                Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                startActivityForResult(intent, 0);
            }
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode== 0){
                try{
                    if(resultCode==Activity.RESULT_OK){    
                        Uri contactData = data.getData();
                        Cursor c = getContentResolver().query(contactData, null, null, null, null);
    
                        // has result
                        if (c.moveToFirst()) {
                            String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                            String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                            Toast.makeText(MainActivity.this, "The name is" +name, Toast.LENGTH_LONG).show();
                            Toast.makeText(MainActivity.this, "The id is" + id, Toast.LENGTH_LONG).show();
                            // new query for the mail
                            Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id}, null);
    
                            //has result
                            if(emailCursor.moveToFirst()) {
                                String email = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                                String emailType = emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
                                Toast.makeText(MainActivity.this, "The email is" +email, Toast.LENGTH_LONG).show();
                                Toast.makeText(MainActivity.this, "The emailtype is" +emailType, Toast.LENGTH_SHORT).show();
    
                            }
    
                            emailCursor.close();
                        }
    
                        c.close();
                    }
    
                }
                catch(Exception e){
                    e.getCause();
                }        
            }
        }
    }
    

    我刚刚修复了 Spinner 和 Button 部分,但我还没有对其进行测试,所以活动发生了变化,所有这些东西都可能是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2012-05-02
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多