Neuen Spinner öffnen

  • 9 Antworten
  • Neuster Beitrag
P

pagrf

Neues Mitglied
Threadstarter
Hallo,
ich habe einen Spinner mit verschieden Inhalten. Nun möchte ich wenn ich auf ein Item in diesem Spinner drücke direkt darunter einen neuen Spinner öffnen. Das Ganze für jedes Item. D.h. sobald ich auf ein neues Item drücke, wird direkt darunter ein anderer Spinner angezeigt mit anderen Items.
Ich schicke euch mal meine home_fragment (so habe ich das genannt, wo die Spinner zu finden sind)

Vielen Dank im Voraus! :)

home_fragment.java:
Code:
package com.example.komplexefunktionentest;



public class home_fragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate ( R.layout.fragment_home,container,false );

        String[] values = {"Bitte auswählen","Lineare Funktionen","Quadratische Funktionen","Potenz- und Wurzelfunktionen","Gebrochen- rationale Funktionen","Polynomfunktionen","Exponential- und Logarithmusfunktionen",
                "Trigonometrische Funktionen","Betrags- und abschnittsweise def. Funktionen","Komplexwertige Funktionen","Spezielle Funktionen"};

        Spinner spinner = (Spinner) v.findViewById ( R.id.spinner1 );
        ArrayAdapter<String> adapter= new ArrayAdapter<String> (this.getActivity (),android.R.layout.simple_spinner_item ,values);
        adapter.setDropDownViewResource ( android.R.layout.simple_spinner_dropdown_item );
        spinner.setAdapter ( adapter );
        return v;

    }
    
}
 
S

SlayNox

Ambitioniertes Mitglied
Hallo Pagrf und Willkommen im Forum,

Versuch es mal mit dem setOnItemSelectedListener




Code:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        int position = spinner.getSelectedItemPosition();
        switch (position ) {
            case 0:
                break;
            case 1:
                break;
            case 2:
                break;

        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
});
Je nach dem welche position gewählt wurde, kannst du deinen Code fortsetzen
Liebe Güße
 
P

pagrf

Neues Mitglied
Threadstarter
Vielen Dank für deine Antwort jedoch bekomme ich hier den error angezeigt, dass ich in position schon eine Reihe davor definiert habe , d.h. in der public void.

Wie würde ich dann meinen Code fortsetzen? Einfach nach case 0: einen weiteren Spinner setzen?
 
S

SlayNox

Ambitioniertes Mitglied
position ist die variable die dein gewähltes Item beinhaltet.
Diese kannst du beliebig umbenennen.

case0 steht für das erste element das gewählt werden kann. case1 für das zweite ....

Am besten du erstellt eine weitere private void in der du einen AlertDialog, der eine Liste beinhaltet, "erstellst" und rufst diese methode dann von deinem Spinner aus auf.


Code:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        int position = spinner.getSelectedItemPosition();
        switch (position ) {
            case 0:
                showAlertDialog1();
                break;
            case 1:
                //showAlertDialog2();
                break;
            case 2:
                //showAlertDialog3();
                break;

        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
 
    }



private void showAlertDialog1(){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final String[] colors = new String[]{"Rot","Gelb","Grün"};
builder.setItems(colors, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
     Log.i("Output", colors[which])
    }
});

AlertDialog dialog = builder.create();
dialog.show();

}
});
 
P

pagrf

Neues Mitglied
Threadstarter
Vielen Dank!
Jedoch tritt folgender error auf:


error: variable position is already defined in method onItemSelected(AdapterView<?>,View,int,long)
 
S

SlayNox

Ambitioniertes Mitglied
Dass bedeutet du hast die variable position bereis in Verwendung. Entweder du benennst sie um, oder du änderst es so ab.

Code:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        int pos = spinner.getSelectedItemPosition();
        switch (pos ) {
            case 0:
                showAlertDialog1();
                break;
            case 1:
                //showAlertDialog2();
                break;
            case 2:
                //showAlertDialog3();
                break;

        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
 
    }
Ich denke jedoch, du solltest dich mit den Allgemeinen Sachen der Android Programmierung nochmals auseinandersetzen.
Natürlich geht probieren über Studieren, es gibt jedoch ein paar Sachen die man wissen sollte :)
 
P

pagrf

Neues Mitglied
Threadstarter
Ja, ich weiß ich mache das jetzt gerade als ein Testprojekt hab bis vor 2 Tagen nichts von programmieren gehört...

Ich bekomme jetzt aber folgende error Meldungen:
error: unreachable statement

error: unreachable statement

error: local variable spinner is accessed from within inner class; needs to be declared final
 
S

SlayNox

Ambitioniertes Mitglied
gehe mal mit der Maus über den entsprechenden Fehler und drücke ALT+ENTER
Du wirst Vorschläge erhalten, die dein Problem lösen könnten.

Andernfalls kannst du folgendes tun.
Schreibe mal final vor die variable spinner

Falls es dann noch nicht geht, scicke mir doch bitte nochmal den Quelltext deines Fragments.
 
P

pagrf

Neues Mitglied
Threadstarter
Funktioniert nicht, auch wenn ich den Punkt nach final weglasse nicht nun bekomme ich diese Fehlermeldungen:
error: illegal start of expression

error: illegal start of expression

error: ';' expected

Code:
package com.example.komplexefunktionentest;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class home_fragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate ( R.layout.fragment_home,container,false );

        String[] values = {"Bitte auswählen","Lineare Funktionen","Quadratische Funktionen","Potenz- und Wurzelfunktionen","Gebrochen- rationale Funktionen","Polynomfunktionen","Exponential- und Logarithmusfunktionen",
                "Trigonometrische Funktionen","Betrags- und abschnittsweise def. Funktionen","Komplexwertige Funktionen","Spezielle Funktionen"};

        Spinner spinner = (Spinner) v.findViewById ( R.id.spinner1 );
        ArrayAdapter<String> adapter= new ArrayAdapter<String> (this.getActivity (),android.R.layout.simple_spinner_item ,values);
        adapter.setDropDownViewResource ( android.R.layout.simple_spinner_dropdown_item );
        spinner.setAdapter ( adapter );
        return v;






                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                int pos = final.spinner.getSelectedItemPosition();
                switch (pos) {
                    case 0:
                        //showalertDialog1();
                        break;
                    case 1:
                        //showalertDialog2();
                        break;
                    case 2:
                        //showalertDialog3();
                        break;

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }



            private void alertDialog1(){
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                final String[] colors = new String[]{"Rot","Gelb","Grün"};
                builder.setItems(colors, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("Output", colors[which]);
                    }
                });

                AlertDialog dialog = builder.create();
                dialog.show();

            }
                    private void alertDialog2(){
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        final String[] colors = new String[]{"Rot","Gelb","Grün"};
                        builder.setItems(colors, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Log.i("Output", colors[which]);
                            }
                        });

                        AlertDialog dialog = builder.create();
                        dialog.show();

                    }
                    private void alertDialog3(){
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        final String[] colors = new String[]{"Rot","Gelb","Grün"};
                        builder.setItems(colors, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Log.i("Output", colors[which]);
                            }
                        });

                        AlertDialog dialog = builder.create();
                        dialog.show();

                    }
        });






    }

}
 
S

SlayNox

Ambitioniertes Mitglied
Bitte informiere dich grundlegend über die Android Entwicklung. Es gibt wirklich reichlich Tutorials.


Code:
package com.example.komplexefunktionentest;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class home_fragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate ( R.layout.fragment_home,container,false );

    String[] values = {"Bitte auswählen","Lineare Funktionen","Quadratische Funktionen","Potenz- und Wurzelfunktionen","Gebrochen- rationale Funktionen","Polynomfunktionen","Exponential- und Logarithmusfunktionen","Trigonometrische Funktionen","Betrags- und abschnittsweise def. Funktionen","Komplexwertige Funktionen","Spezielle Funktionen"};

    Spinner spinner = (Spinner) v.findViewById ( R.id.spinner1 );
    ArrayAdapter<String> adapter= new ArrayAdapter<String> (this.getActivity (),android.R.layout.simple_spinner_item ,values);
    adapter.setDropDownViewResource ( android.R.layout.simple_spinner_dropdown_item );
    spinner.setAdapter ( adapter );
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                int pos = spinner.getSelectedItemPosition();
                switch (pos) {
                    case 0:
                        alertDialog1();
                        break;
                    case 1:
                        alertDialog2();
                        break;
                    case 2:
                        alertDialog3();
                        break;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
   
    return v;
    }

    private void alertDialog1(){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] colors = new String[]{"Rot","Gelb","Grün"};
        builder.setItems(colors, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("Output AD1", colors[which]);
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }
   
    private void alertDialog2(){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] colors = new String[]{"Rot","Gelb","Grün"};
        builder.setItems(colors, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("Output AD2", colors[which]);
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }
   
    private void alertDialog3(){
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final String[] colors = new String[]{"Rot","Gelb","Grün"};
        builder.setItems(colors, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("Output AD3", colors[which]);
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }
   
}
Vergleich bitte deins, mit meinem
 
Oben Unten