2010-11-03 6 views
1

J'ai deux classes qui étendent l'activité et ont besoin d'appeler une autre méthode de classe sur la classe principale sur le développement android. J'ai fait quelque chose comme subclass sub = new subclass(). Cela n'a pas fonctionné.Comment appeler une méthode Java d'une classe à une autre dans le développement Android?

en 1ère classe d'activité

package org.me.intent_testing; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.*; 
import android.view.*; 
import android.content.Intent; 

public class FirstActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Button orderButton = (Button)findViewById(R.id.order); 
    Button orderButton = new Button(this); 
    orderButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
     Intent intent = new Intent(FirstActivity.this, secondActivity.class); 
     startActivity(intent); 
     } 

    }); 
    } 
} 

En classe secondActivity

Dans AndroidManifest.xml

<?xml version="1.0" encoding="UTF-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.me.intent_testing"> 
    <application> 
     <activity android:name=".FirstActivity" android:label="FirstActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
     <activity android:name=".secondActivity" /> 
    </application> 

</manifest> 

Dans R.java

package org.me.intent_testing; 

public final class R { 
    public static final class attr { 
    } 
    public static final class layout { 
     public static final int main=0x7f020000; 
    } 
    public static final class string { 
     public static final int app_name=0x7f030000; 
    } 
} 

J'ai un problème de liaison entre deux classes.

+2

Postez le strict minimum des classes nécessaires pour décrire le problème afin que nous puissions tenter d'expliquer ce qui est incorrect – KevinDTimm

+0

voulez-vous revenir à la première activité de la seconde? Le vous devez utiliser à nouveau l'intention de revenir en arrière et de ne pas appeler finish(). –

Répondre

2

Puis-je savoir pourquoi vous aimeriez le faire? Si cette méthode est si importante pour les deux classes, créez-la dans une classe auxiliaire (qui ne prolonge pas l'activité) et créez-en un objet dans les deux classes, puis accédez à cette méthode avec cet objet.

0

Essayez simplement d'étiqueter la méthode requise comme statique. Mais rappelez-vous que dans ce cas, la méthode appelée ne doit pas dépendre de variables membres non statiques des méthodes de la classe.

+0

Qu'est-ce qui ne se limite pas à utiliser un langage sans objet, s'il ignore tous les avantages des objets? s'il sous-classe, il lui manque quelque chose de plus gros. – KevinDTimm

+0

Pourquoi ne pas utiliser une autre langue? Parce que Android ne donne pas vraiment un choix de langue. Je veux dire, oui, il y a des alternatives qui compilent à davlik, mais les outils ne sont pas complètement prêts à aller sous votre nez, alors que le ndk ne fournit ni la possibilité d'écrire une application complète ni l'accès à la plupart des API. –

+0

@Chris - c'était censé être rhétorique - le fait est que, si vous ne pouvez pas utiliser l'outil correctement, le seul choix est d'utiliser un nouvel outil ou d'apprendre à utiliser l'outil correctement. puisqu'il n'y a pas d'autre outil, que reste-t-il? – KevinDTimm

2

SubClass sub=new SubClass(); crée un objet de classe SubClass.

Ce n'est pas une méthode d'appel.

Entrez le code ici

Si la méthode est définie dans la classe SubClass alors vous pouvez l'appeler en utilisant son objet et l'opérateur point.

sub.MethodName();

Questions connexes