2010-10-05 5 views
8

Sono un principiante in Android Developing. Può any1 indicarmi come chiamare un metodo di una classe tenuta in un altro pacchetto.come chiamare un metodo di una classe tenuto sotto altro pacchetto

Come la classe A nel pacchetto 1, chiama un metodo nella classe B del pacchetto 2 che restituisce un array o un oggetto.

Devo creare un Intento per quello ?? in realtà devo raccogliere tutte le informazioni in 1 classe da diverse classi tenute in pacchetti diversi.

Grazie in anticipo.

package com.xyz.Master; 


import android.app.Activity; 
import android.content.Context; 
import android.os.Build; 
import android.telephony.CellLocation; 
import android.telephony.TelephonyManager; 
import android.telephony.gsm.GsmCellLocation; 

public class PhoneInfo extends Activity { 

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
GsmCellLocation location = (GsmCellLocation) tm.getCellLocation(); 
public int cellID, lac,mcc,mnc; 
public String imei,manufacturer,model,product; 
String[] phoneInfo; 
int[] phoneLocationInfo;  

public String[] getHandsetInfo() 
{ 
    manufacturer = Build.MANUFACTURER; 
    model = Build.MODEL; 
    product = Build.PRODUCT; 
    imei=tm.getDeviceId();   

    String softwareVersion = tm.getDeviceSoftwareVersion(); 

    phoneInfo = new String[5]; 
    phoneInfo[0]=imei; 
    phoneInfo[1]=product; 
    phoneInfo[2]=model; 
    phoneInfo[3]=manufacturer; 
    phoneInfo[4]=softwareVersion; 
    return phoneInfo; 

} 
public int[] getHandsetLocationInfo() 
{ 
    phoneLocationInfo= new int[4]; 
    String networkOperator = tm.getNetworkOperator(); 
    if (networkOperator != null) { 
      mcc = Integer.parseInt(networkOperator.substring(0, 3)); 
      mnc = Integer.parseInt(networkOperator.substring(3)); 
     } 
    CellLocation.requestLocationUpdate(); 
    cellID = location.getCid(); 
    lac = location.getLac(); 

    phoneLocationInfo[0]=cellID; 
    phoneLocationInfo[1]=lac; 
    phoneLocationInfo[2]=mcc; 
    phoneLocationInfo[3]=mnc; 

    return phoneLocationInfo; 

} 
} 

Voglio chiamare sopra i metodi di un'altra classe e ottenere questi array. Come fare, c'è qualche errore nel codice precedente ??

+0

Si prega di definire "Pacchetto" - pensi al pacchetto Java? O qualcos'altro? –

+0

è il metodo statico? in tal caso, potresti usare l'istruzione 'import static' per utilizzarla in Classe B (supponendo che Android JVM supporti questo) –

risposta

6

Basta importare altro pacchetto e creare un'istanza della classe B e chiamare la funzione.

package Package1; 
import Package2; 
Class A { 
    void callClassBFunction(){ 
     B = new B(); 
     b.callFunction(); 
} 
package Package2; 
public class B { //class B should be public 
    Object callFunction(){ 
     //do something and return object 
    } 
} 
+0

è davvero urgente .. rispondi al più presto .. grazie in anticipo – Ankit

16

Supponendo, stiamo parlando del Java package, quindi abbiamo diverse regole per chiamare metodi su classi in altri pacchetti. Per farla semplice, questo funziona:

package com.example.one; 
public class ArrayProvider { 
    public String[] getArray() { 
    return new String{"I'm ","inside ", "an ", "array "}; 
    } 
    public static Object getObject() { 
    return new String{"I'm ","inside ", "an ", "array "}; 
    } 
} 

Ora il codice per accedere ai metodi della classe ArrayProvider dalla altro pacchetto:

package my.namespace.app; 
import com.example.one.ArrayProvider;  // import the other class 

public class MyClass { 

    public static void main(String[] args) { 

    // to access the static method 
    Object result1 = ArrayProvider.getObject(); 

    // to access "the other" method 
    ArrayProvider provider = new ArrayProvider(); 
    String[] result2 = provider.getArray(); 
    } 
} 

Letture

Problemi correlati