1
I am making an application that creates graphs, I am creating the implementing of the nodes via Dialog where the usurious selects us and creates a arrest but this giving Cast error.
public class DialogAddAresta extends AppCompatDialogFragment {
    private String selectedNodeTo, selectedNodeFrom;
    private Spinner spTo, spFrom;
    private List<String> listNodes;
    private int posTo, posFrom;
    private ExampleDialogListner listner;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()));
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.layout_dialog_add_aresta, null);
        listNodes = getArguments().getStringArrayList("list");
        spTo = view.findViewById(R.id.sp_to);
        spFrom = view.findViewById(R.id.sp_from);
        ArrayAdapter<String> nodes = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_item, listNodes);
        nodes.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spTo.setAdapter(nodes);
        spFrom.setAdapter(nodes);
        builder.setView(view)
                .setTitle("Add Aresta")
                .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })
                .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        posTo = spTo.getSelectedItemPosition();
                        posFrom = spFrom.getSelectedItemPosition();
                        selectedNodeTo = listNodes.get(posTo);
                        selectedNodeFrom = listNodes.get(posFrom);
                        listner.applyNodes(selectedNodeTo, selectedNodeFrom);
                        Toast.makeText(getActivity(),"node to "+selectedNodeTo+ " from "+selectedNodeFrom,Toast.LENGTH_SHORT).show();
                    }
                });
        return builder.create();
    }
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            listner = (ExampleDialogListner) context;
        } catch (ClassCastException e){
            throw new ClassCastException(context.toString() + "must implement ExampleDialogListner");
        }
    }
    public interface ExampleDialogListner{
        void applyNodes(String nodeTo, String nodeFrom);
    }
}
my class tab that creates the Fragments:
public class Tab extends AppCompatActivity implements DialogAddAresta.ExampleDialogListner {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab);
        TabLayout tabLayout = findViewById(R.id.tablayout_id);
        ViewPager viewPager = findViewById(R.id.viewpager_id);
        ViewPageAdapter adapter = new ViewPageAdapter(getSupportFragmentManager());
        adapter.AddFragment(new FragmentGrafo(), "Grafo");
        adapter.AddFragment(new FragmentAlgoritmo(), "Algoritmo");
        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);
    }
}
My Fragment Class is here that I want what the user has selected:
public class FragmentGrafo extends Fragment  implements DialogAddAresta.ExampleDialogListner {
    private static final int CONTENT_VIEW_ID = 10101010;
    private DefaultFragment fragment;
    private Graph graph;
    private String[] criaNos = new String[]{"A","B","C","D","E","F","G","H","I","J","K",
            "L","M","N","O","P","Q","R","S","T","U","V","X","W","Y","Z"};
    private int pos = 0;
    private float x = 0.0f;
    private float y = 0.0f;
    private String styleSheet = "graph { fill-color: #EEE; }" +
            "node { size: 100; text-size: 30; fill-color: white; stroke-mode: plain;}";
    public List<String> nos = new ArrayList<>();
    private ArrayAdapter<String> adapter;
    private List<String> criaArestas = new ArrayList<>();
    private int arestaPos = 0;
    private String nodeTo, nodeFrom;
    TextView txtTips;
    public FragmentGrafo(){
    }
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       final View view = inflater.inflate(R.layout.grafo_fragment, container, false);
        txtTips = view.findViewById(R.id.txtView);
       BottomNavigationView bottomNavigationView = view.findViewById(R.id.bottomNavView);
       bottomNavigationView.setOnNavigationItemSelectedListener(selectedListener);
       return view;
    }
    private BottomNavigationView.OnNavigationItemSelectedListener selectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_add_node:
                    if (pos < criaNos.length) {
                        graph.addNode(criaNos[pos]);
                        graph.getNode(criaNos[pos]).setAttribute("ui.label", criaNos[pos]);
                        graph.getNode(criaNos[pos]).setAttribute("xy", x, y);
                        nos.add(criaNos[pos]);
                        pos++;
                        x += 1.0f;
                        y += 1.5f;
                    }else {
                        Toast.makeText(getActivity(), "Não pode adcionr mais nós", Toast.LENGTH_SHORT).show();
                    }
                    return true;
                case R.id.action_add_aresta:
                    openDialogAddAresta();
                    return true;
                case R.id.action_remover:
                    txtTips.setText("Azul");
                    Toast.makeText(getActivity(), "Ultima aresta "+criaArestas.toString(), Toast.LENGTH_SHORT).show();
                    return true;
            }
            return false;
        }
    };
    @Override
    public void onCreate(@Nullable android.os.Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        graph = new MultiGraph("AthenaGraph");
        graph.setAttribute( "ui.stylesheet", styleSheet);
        graph.setAttribute("ui.antialias");
        display(savedInstanceState, graph, false);
    }
    public void display(Bundle savedInstanceState, Graph graph, boolean autoLayout) {
        if (savedInstanceState == null) {
            FragmentManager fm = getActivity().getFragmentManager();
            fragment = (DefaultFragment) fm.findFragmentByTag("fragment_tag");
            if (null == fragment) {
                fragment = new DefaultFragment();
                fragment.init(graph, autoLayout);
            }
            FragmentTransaction ft = fm.beginTransaction() ;
            ft.add(R.id.layoutFragment, fragment).commit();
        }
    }
    public void openDialogAddAresta() {
        DialogAddAresta dialogAddAresta = new DialogAddAresta();
        Bundle bundle = new Bundle();
        bundle.putStringArrayList("list", (ArrayList<String>)nos);
        dialogAddAresta.setArguments(bundle);
        dialogAddAresta.show(getActivity().getSupportFragmentManager(), "Add Aresta");
    }
    @Override
    public void applyNodes(String selectedNodeTo, String selectedNodeFrom) {
        Toast.makeText(getActivity(), "FragmentGrafo "+selectedNodeTo+" "+selectedNodeFrom, Toast.LENGTH_SHORT).show();
    }
}
And where is the code where you instantiate the Fragment?
– Leonardo Lima
ola, then I realized that it is returning the value that the user selects for TAB as do for the value back to fragmentGrafo?
– Gabriel Ricardo