2016-08-19 6 views
-1

Ich versuche, den edttxt Wert zuzugreifen, die Mainactivity in der Klasse vorhanden ist, wird dies in der Klasse enthalten Mainactivity:Zugriff auf Werte aus verschiedenen Klassen

Button btn=(Button)findViewById(R.id.btn); 

     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       EditText edttxt =(EditText)findViewById(R.id.edttxt); 
       TextView txtview =(TextView)findViewById(R.id.textView); 
       txtview.setText(edttxt.getText().toString()); 
      } 
     }); 

Der Zugang I muß die 100 Werte von edttxt Wert zu ersetzen, in die andere Klasse, ist dieser Teil ich die andere Klasse ändern müssen:

public void switchFlash() { 
     final Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 
       if (isFlashOn()) { 
        turnOffFlash(); 
        x++;  
       } else if (x>20) { 
        turnOffFlash(); 
       } 
       else 
       { 
        turnOnFlash(); 
       } 
       handler.postDelayed(this,100); 
      } 
     }; 
     handler.postDelayed(runnable,100); 
    } 
+1

Und die Frage ist? –

+0

deklarieren Sie die statische globale Variable und speichern Sie darin den Textwert. Dann greifen Sie auf diese statische Variable in jeder beliebigen Klasse mit 'ClassName.yourStaticvariableName' zu. –

+0

deklarieren Sie eine statische Variable und speichern Sie diesen Wert und versuchen Sie, auf dieselbe in Ihre Klasse zuzugreifen –

Antwort

0

Wie ich aus der obigen Konversation zu verstehen und auch aus dem Kontext des Codes, was Sie auf die andere Klasse übergeben wollen, ist der Wert (str in der EditText-Ansicht enthalten und nicht nur die Ansicht selbst. In diesem Fall haben Sie verschiedene Möglichkeiten, aber eine einfache Möglichkeit zu tun, ist es diesen ‚Wert‘ übergeben zu der anderen Klasse bei der Objekterstellung unter Verwendung einen constractor wie folgt aus:

Button btn=(Button)findViewById(R.id.btn); 
final EditText edttxt =(EditText)findViewById(R.id.edttxt); 
OtherClass otherClass = new OtherClass(delay); 
btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     delay = edttxt.getText().toString(); 
     TextView txtview =(TextView)findViewById(R.id.textView); 
     txtview.setText(edttxt.getText().toString()); 
    } 
}); 

Declare Verzögerung als globale Variable von der MainActivity Klasse wie:

public class MainActivity extends AppCompatActivity { 

    private String delay; 
    .... 

Und Ihre andere Klasse kann wie folgt aussehen:

public class OtherClass { 
    int delay; 
    public OtherClass(String delay){ 
     this.delay = Integer.parseInt(delay); 
    } 
    //...your code 
    public void switchFlash() { 
     final Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 
       if (isFlashOn()) { 
        turnOffFlash(); 
        x++; 
       } else if (x>20) { 
        turnOffFlash(); 
       } 
       else 
       { 
        turnOnFlash(); 
       } 
       handler.postDelayed(this,delay); 
      } 
     }; 
     handler.postDelayed(runnable,delay); 
    } 
} 
+0

Ich habe den Code geändert, aber wenn ich ihn auf das Handy hochlade, funktioniert die Anwendung nicht mehr, bevor sie gestartet wird. – Aloweiwi

+0

In anderen Teilen Ihres Codes kann ein Fehler enthalten sein. Bitte geben Sie ihn daher nach Möglichkeit an, damit wir Ihnen behilflich sein können. Es gibt auch eine Fehlermeldung, die im Logcat angezeigt wird, wenn Ihre Anwendung beendet wird, was das Debugging sehr einfach macht. Bitte geben Sie das auch an. – Addis

Verwandte Themen