2017-03-10 3 views
0

J'essaie d'écrire une application Android qui se connecte lorsque vous cliquez sur un bouton pour mettre du texte dans la console, mais je reçois une erreur lorsque je la remplis et l'exécute sur mon bord Galaxy S7 exécutant 7.0 API version 24.java.lang.RuntimeException: Impossible d'instancier l'activité

I've read that I need to add something into the manifest file Cependant, je ne suis pas sûr de ce que j'ai besoin d'ajouter.

EXCEPTION FATAL: principal processus: me.adamstephenson.test.test1, PID: 16405 java.lang.RuntimeException: impossible à instancier activité ComposantInfo {me.adamstephenson.test.test1/me.adamstephenson.test .test1.MainActivity}: java.lang.ClassCastException: me.adamstephenson.test.test1.MainActivity ne peut pas être jeté à android.app.Activity

package me.adamstephenson.test.test1; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity { 
    public class MyActivity extends Activity { 
     protected void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 

      setContentView(R.layout.activity_main); 

      final Button button = (Button) findViewById(R.id.RequestKey); 
      button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        Log.d("RequestKey", "Clicked"); 
       } 
      }); 
     } 
    } 
} 

Source

Voici la mise en page

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 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" 
tools:context="me.adamstephenson.test.test1.MainActivity"> 

<Button 
    android:id="@+id/RequestKey" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    tools:layout_editor_absoluteX="196dp" 
    tools:layout_editor_absoluteY="129dp" /> 
</android.support.constraint.ConstraintLayout> 

est enfin là le fichier manifeste

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="me.adamstephenson.test.test1"> 

<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> 

</manifest> 
+1

S'il vous plaît montrer votre –

+0

manifeste @NikaKurdadze Bien sûr, vient de modifier le poste. – Adam

Répondre

1

Vous parlez de la mauvaise classe dans votre manifeste. MyActivity est l'activité, pas MainActivity. Changer votre manifeste à ce qui suit:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="me.adamstephenson.test.test1"> 

    <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$MyActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

</manifest> 

Et

Vous devriez faire votre activité intérieure static ainsi:

public class MainActivity { 
    public static class MyActivity extends Activity { 
     ... 
    } 
} 
+0

J'ai juste essayé de lancer ceci: 'java.lang.RuntimeException: Impossible d'instancier l'activité ComponentInfo {me.adamstephenson.test.test1/me.adamstephenson.test.test1.MainActivity $ MyActivity}: java.lang.InstantiationException: java.lang.Class n'a pas de constructeur d'argument zéro Que signifie "n'a pas de constructeur d'argument zéro" et où devrais-je regarder? – Adam

+1

S'il vous plaît vérifier l'édition –

+1

J'ai dû appuyer sur "Invalider Cache/Redémarrer" pour que cela fonctionne mais cela a fonctionné. J'ai marqué la question comme résolue. – Adam

1

Parce que votre classe d'activité est créée en tant que classe interne et statique classe. Je n'ai aucune idée pourquoi avez-vous choisi cette façon pendant que vous pouvez l'utiliser de cette façon appropriée:

public class MyActivity extends Activity { 

    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     setContentView(R.layout.activity_main); 

     final Button button = (Button) findViewById(R.id.RequestKey); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Log.d("RequestKey", "Clicked"); 
      } 
     }); 
    } 
    . 
    . 
    . 
    // other methods or inner class can exist here 
    }