Android Intent无效

时间:2016-05-22 12:41:29

标签: java android android-intent

我刚刚开始在Android中开发应用程序,但是当我尝试创建电子邮件意图时,我收到了错误消息。单击按钮时文件崩溃。代码如下: MainActivity.java: -

    public class MainActivity extends AppCompatActivity {

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

    Button myButton;
    myButton = (Button)findViewById(R.id.enter);

    myButton.setOnClickListener(new OnClickListener() {
        @Override
        private void onClick () {
            submit();
        }
    }

    );

    public void submit() {

        // Getting text from the EditText View
        EditText editText = (EditText) findViewById(R.id.name);
        String text = editText.getText().toString();
        // Creating an email intent


        Intent email = new Intent(Intent ACTION_SEND);
        email.putExtra(Intent.EXTRA_EMAIL, newString[]{"youremail@gmail.com"});
        email.putExtra(Intent.EXTRA_SUBJECT, text);
        email.setType("message/rfc822");
        startActivity(Intent.createChooser(email, "Choose an Email client :"));
    }
}

activity_main.xml中: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:hint="Name"/>

    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/submit"
        android:onClick="submit"
        android:id="@+id/enter" />
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

您不需要该行:

if (intent.resolveActivity(getPackageManager()) != null) {

另外,我相信Intent.EXTRA_EMAIL需要一个字符串数组。相反,试试这个:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"xyz@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, text);
startActivity(Intent.createChooser(intent, "Send Email"));

答案 1 :(得分:0)

是的, mattfred 所回答的是正确的。照他说的做。然后,如果那不起作用,那么删除

onClick:"Submit" 
按钮属性中的

为您的按钮指定一个特定ID,并在您的活动中初始化按钮

Button myButton;

然后活动onCreate

myButton = (Button)findViewById(R.id.yourButtonId);
myButton.setOnClickListener(new OnClickListener(){
@Override
private void onClick(){
submit();
}
});

我想我发现了一个错误。

替换提交方法,就像我一样

    public void submit(){ 

    // Getting text from the EditText View
     EditText editText = (EditText)findViewById(R.id.name);
     String text = editText.getText().toString(); 
    // Creating an email intent


    Intent email =new Intent(Intent ACTION_SEND);   
email.setType("text/plain");
     email.putExtra(Intent.EXTRA_EMAIL,new String[]{"youremail@gmail.com"});
      email.putExtra(Intent.EXTRA_SUBJECT, text);
startActivity(Intent.createChooser(email,"Choose an Email client :"));

你做错了是你从 TextView 获取文字。您必须从 EditText

获取它

此外,在提交方法中,您已初始化ID为 R.id.name TextView 。但是在xml和xml中没有 TextView ,您的EditText会使用ID R.id.name 进行初始化。

发现更多错误......

在xml的按钮属性中,您已编写

android:onClick="Submit"

但您的方法名称是

submit()不是Submit()

请记住,Java区分大小写...

另见,我认为你可以简单地使用

public void submit(){}

您没有理由使用

public void submit(View v){}

毕竟,按照我的说法更改每个代码。不仅是方法。你也删除了

android:onClick="submit"

也来自您的XML按钮属性。

希望您已理解

- 抱歉我的代码输入错误。实际上现在我在移动设备上