2016-07-21 5 views
1

MainActivityAndroid MainActivity Drucken/konvertieren Sie den Wert in 0/null?

public class MainActivity extends AppCompatActivity { 


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

    Calc A = new Calc(); 
    int pIN = A.pIN(); 
    int pOUT = A.pOUT(); 

    System.out.println("IN : " + pIN); 
    System.out.println("OUT : " + pOUT); 

} 

} 

clascc Calc - keine Tätigkeit

public class Calc extends MainActivity { 


public int PassIN; 
public int PassOUT; 

public String convertStringToHex(String str) { 

    char[] chars = str.toCharArray(); 

    StringBuffer hex = new StringBuffer(); 
    for (int i = 0; i < chars.length; i++) { 
     hex.append(Integer.toHexString((int) chars[i])); 
    } 

    return hex.toString(); 
} 

public String convertHexToDec(String hex) { 

    StringBuilder sb = new StringBuilder(); 
    StringBuilder temp = new StringBuilder(); 

    for (int i = 0; i < hex.length() - 1; i += 2) { 

     String output = hex.substring(i, (i + 2)); 

     int decimal = Integer.parseInt(output, 16); 

     temp.append(decimal); 
    } 

    return temp.toString(); 
} 

public void Kappa() { 


    String trnsferRP = "VDV2b0301"; 

    Calc strToHex = new Calc(); 
    String hex = strToHex.convertStringToHex(trnsferRP); 
    Calc strToDec = new Calc(); 
    String dec = strToDec.convertHexToDec(hex); 

    String cut = dec.substring(10); 

    String A = cut.substring(0, 2); 
    String B = cut.substring(2, 4); 
    String C = cut.substring(4, 6); 
    String D = cut.substring(6, 8); 

    int cvA = Integer.parseInt(A); 
    int cvB = Integer.parseInt(B); 
    int cvC = Integer.parseInt(C); 
    int cvD = Integer.parseInt(D); 

    int calcA = (cvA - 48); 
    int calcB = (cvB - 48); 
    int calcC = (cvC - 48); 
    int calcD = (cvD - 48); 

    this.PassIN = calcA + calcB; 
    this.PassOUT = calcC + calcD; 
} 

public int pIN(){ 
    return PassIN; 
} 

public int pOUT(){ 
    return PassOUT; 
} 

} 

Ergebnis logcat

07-21 01:29:10.672 26194-26224/com.example.kappa.passvalue2 W/EGL_emulation: eglSurfaceAttrib not implemented 
07-21 01:29:10.672 26194-26224/com.example.kappa.passvalue2 W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xae3e3580, error=EGL_SUCCESS 
07-21 01:29:20.426 26373-26373/com.example.kappa.passvalue2 W/System: ClassLoader referenced unknown path: /data/app/com.example.kappa.passvalue2-1/lib/x86 
07-21 01:29:20.722 26373-26373/com.example.kappa.passvalue2 W/System: ClassLoader referenced unknown path: /data/app/com.example.kappa.passvalue2-1/lib/x86 
07-21 01:29:20.772 26373-26373/com.example.kappa.passvalue2 W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
07-21 01:29:20.827 26373-26373/com.example.kappa.passvalue2 I/System.out: IN : 0 
07-21 01:29:20.827 26373-26373/com.example.kappa.passvalue2 I/System.out: OUT : 0 
07-21 01:29:20.837 26373-26399/com.example.kappa.passvalue2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 

ich ein Problem habe den Wert zu übergeben, ich versuche, den Wert berechnet passieren und konvertiert von Klasse Calc [keine Aktivität] zu MainActivity, um verwendet zu werden/prompt out. Aber der Wert wurde 0/null. sollte angezeigt werden (Beispieldaten) IN: 3 OUT: 1

also kann mir jemand helfen? oder meine Methode falsch dabei?

bereits versucht sharedpreference und Vorsatz Bündel

+0

Woher haben Sie den Wert? Ist das nicht, dass Sie gerade einen Calc-Instant neu erstellen und pIn und pOut aufrufen, ohne PassIN, PassOut? – brian661

+0

ooo so int pIN = A.pIN(); int pOUT = A.pOUT(); nicht bestanden Wert? Wie setze ich PassIN, PassOut? Entschuldigung im neuen Android –

+0

in Ihrer Calc-Klasse können Sie einen Konstruktor hinzufügen, public Calc (int pin, int schmollen) { this.pin = pin; this.pout = Schmollmund; } und dann ändern Calc A = new Calc(); zu Calc A = neuer Calc (3,1); – brian661

Antwort

2

Sie die PIN- und Pout Werte nicht einstellen. Da Sie pIN und pOUT als öffentliche Variablen deklariert haben, können Sie sie wie folgt setzen.

Calc A = new Calc(); 
A.PassIN = 3; 
A.PassOUT = 1; 

Als @ Brian661 oben erwähnt, können Sie auch einen Konstruktor erstellen, der die Variablen PassIN und PassOUT initialisiert. In diesem Fall sollten Sie Passin und Passout machen privat, da Sie nicht sie müssten direkt zuzugreifen:

public class Calc extends MainActivity { 
    private int PassIN; 
    private int PassOUT; 
    public Calc(int PassIN, int PassOUT){ 
     this.PassIN = passIN; 
     this.PassOUT = passOUT; 
    } 
    //rest of class 
} 

Edit:

Mit dem Code, den Sie zur Verfügung gestellt haben, der einzige Weg, PassIN zu ändern und PassOUT ist Kappa() zu rufen.

Calc A = new Calc(); 
A.Kappa(); 

Ich vermute, dass die Änderungen trnsferRP Wert, so dass Sie wahrscheinlich die Unterschrift von public void Kappa() ändern public void Kappa(String trnsferRP) so können Sie stattdessen in der Zeichenfolge übergeben wollen.

+0

Sorry, ich bin verwirrt, wird die Variable nicht immer 3 und 1. Diese Daten VDV2b0301 (von Socket empfangen) wird in hexadezimale und dezimale konvertiert werden, so ist es nicht Standard dies nur ein Beispiel. Wenn ich dies so deklariere, wird immer 3 und 1 angezeigt. Was ich also versuchen will ist, die Daten aus der Klasse Calc zu berechnen, um sie in MainActivity zu übergeben. die .Calc A = neue Calc(); kann nicht angewendet werden. –

+0

@WafiIsmail Siehe meine Bearbeitung zu meiner Antwort.Mit dem von Ihnen bereitgestellten Code tun Sie "int pIN = A.pIN();" und "int pOUT = A.pOUT();" tun Sie nichts allein. Sie geben nur 0 zurück, da Sie PassIN und PassOUT niemals direkt initialisieren. Nur die Kappa() - Methode ändert PassIN und PassOut. Sie müssen Kappa() anrufen. – Vinnie

+0

danke, du hast mir geholfen, mein letztes Puzzle zu knacken .. habe seit gestern gearbeitet .. das ist der letzte Teil, der meine App zum Absturz bringt .. ich schätze und freue mich, dass du hilfst jetzt verstehe ich es –