Dostęp argumentu funkcji do innej funkcji

0

Mam dwie funkcje i chciałbym aby parametr funkcji A mógł wykorzystać w funkcji B

	public void onItemSelected(AdapterView<?> parent, View view, 
           int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

Mam kolejną funkcję public void, w której chciałbym zastosować switch'a o parametrze pos ,lecz nie jest on dostępny publicznie. Czy tutaj muszę zastosować referencję?

0

Chcesz wykorzystać parametr funkcji czy pole klasy? Bo z tym pierwszym się nie spotkałem jeszcze, ale jestem początkuący.

0

Mam rozumieć, że ta funkcja przypisuje do pola prywatnego tej klasy to co wynosi pos ?
Czyli coś takiego

private pos;

   public void onItemSelected(AdapterView<?> parent, View view, 
           int pos, long id) {
   this.pos = pos;
//Reszta kodu
    }

Bo jeśli tak to możesz dorobić jeszcze funkcje
Wyglądało by to tak:

private int pos;

   public void onItemSelected(AdapterView<?> parent, View view, 
           int pos, long id) {
   this.pos = pos;
//Reszta kodu
    }

   public int getPos(){
return this.pos;
}

EDIT:
Chyba źle zrozumiałem obie funkcje są w jednej klasie bo jeśli tak wystarczy pierwsza wersja i w drugiej funkcji używasz this.pos nie potrzeba tworzyć oddzielnej funkcji

dodanie znaczników <code class="java"> - furious programming

0

Ale gdzie masz tą funkcję ? Jeżeli jest zupełnie niezależna do pierwszej to musisz drugi raz przekazać parametr.

0

Są oddzielnie i tutaj jest ten problem.
Jest funkcja

public void onItemSelected(AdapterView<?> parent, View view, 
           int pos, long id) {}

i:

public void Zdarzenie
{
if(pos==0){}
}
1

NO a dlaczego nie przekazać funkcji Zdarzenie pos jako parametru ?

1

To jakieś zadanie domowe z programowania? Jeśli na pewno musisz użyć w nowej funkcji tego pos, to znaczy, że gdzieś jest zadeklarowana zmienna pos. Gdzie indziej niż w tym onItemSelected. Jeśli nie ma do niej dostępu, to możesz dopisać metodę int getPos(). Albo użyć referencji w tym Zdarzenie(Typ_co_ma_te_pos ref)

0

Niestety aplikacja się crashuje

	public void onItemSelected(AdapterView<?> parent, View view, 
           int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }


	public void Zdarzenie (View widok, int pos)
{
switch(pos)
{
case 0:
}
}
    {

Stworzyłem oddzielną klasę:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    
    public void onItemSelected(AdapterView<?> parent, View view, 
            int pos, long id) {
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

i MainActivity chciałbym odnieść się do int pos, który sczytuje aktualną pozycję Spinnera:

public void Zdarzenie (View widok)
{
switch(pos)

}
    {
0

Hmm, trochę ciężko Cie zrozumieć. Twój problem polega na tym jak przekazać pos z jednego activity do drugiego tak ?

0
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
 private int odczyt;
    public void onItemSelected(AdapterView<?> parent, View view, 
            int pos, long id) {
        odczyt = pos;
    }
 
    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
  public int getOdczyt()
{
return odczyt;
}
}
 

Drugie:

public void Zdarzenie (View widok)
{
switch(getOdczyt())
 
}
    {
0

Jest na to kilka sposobów, osobiście polecam metodę putExtra .Nie jest ona aktualnie na topie i nie doradza się stosowania jej w nowych projektach natomiast ma jedną zaletę - jest strasznie prosta. Po prostu wywołaj ją na rzecz nowego activity przed startem i potem odbierz w drugim i użyj contentu który wysłałeś.

1

Strona, na której znajdziesz Tutorial do korzystania z putExtra
http://javastart.pl/programowanie-android/pierwsza-aplikacja/
Ctrl+F "putExtra" :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1