我刚刚开始在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>
答案 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按钮属性。
希望您已理解
- 抱歉我的代码输入错误。实际上现在我在移动设备上