2017-08-11 14 views
-1

私はインテントを使用しようとしていますが、いずれかのボタンをクリックすると、アプリは動作を停止し、終了します。私は初心者です。私はxmlファイル、javaファイル、メニファーストファイルを提供しています。誰かが助けます。 ここに私のxmlファイルです:ボタンをクリックするとアプリがクラッシュするのはなぜですか?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.example.shreya.intents.MainActivity"> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Set Alarm" 
     android:id="@+id/alarm" 
     android:onClick="setAlarm"/> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Map" 
     android:id="@+id/map" 
     android:onClick="seeMap"/> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Mail" 
     android:id="@+id/mail" 
     android:onClick="email"/> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="Email ID" 
     android:inputType="textCapWords" 
     android:id="@+id/address"/> 

</LinearLayout> 

そして、ここにされた私の.javaファイル:

package com.example.shreya.intents; 

import android.content.Intent; 
import android.net.Uri; 
import android.provider.AlarmClock; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import java.util.Locale; 



import static com.example.shreya.intents.R.id.alarm; 

public class MainActivity extends AppCompatActivity { 

    private Button mail; 

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

    public void setAlarm(){ 
     String message="Wake Up"; 
     int hour=7; 
     int minutes=0; 
     Intent intent = new Intent(AlarmClock.ACTION_SHOW_ALARMS); 
     if (intent.resolveActivity(getPackageManager()) != null) { 
      startActivity(intent); 
     } 
    } 

    public void seeMap(){ 
     String uri = String.format(Locale.ENGLISH, "geo:%f,%f", 28.699884, 77.273075); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse(uri)); 
     if(intent.resolveActivity(getPackageManager())!=null) 
      startActivity(intent); 
    } 

    public void email(){ 
     EditText mail=(EditText)findViewById(R.id.address); 
     String add=mail.getText().toString(); 
     composeEmail(add,"shreya"); 
    } 

    public void composeEmail(String addresses, String subject) { 
     Intent intent = new Intent(Intent.ACTION_SENDTO); 
     intent.setData(Uri.parse("mailto:")); // only email apps should handle this 
     intent.putExtra(Intent.EXTRA_EMAIL, addresses); 
     intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
     intent.putExtra(Intent.EXTRA_TEXT,"hello"); 
     if (intent.resolveActivity(getPackageManager()) != null) { 
      startActivity(intent); 
     } 
    } 

} 

そして最後に、これは私のmenifestファイルです:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+2

クラッシュのstacktrace/logcatを指定してください – Thomas

答えて

3

onClickメソッドにパラメータView viewを追加する必要があります。例えば

emailseeMap

public void setAlarm(View view){ 

} 

は、他のonClick方法にそのパラメータを追加します。ボンネットの下に

、システムはActivityで正確なonClick方法を把握するためにリフレクションを使用して、システムが方法を見つけるために、以下の正確なパターンを使用しています:XML onClick属性で指定されたメソッド名を持つpublic void方法を持っているし、単一のパラメータView

関連する問題