Я хочу реализовать алгоритм BFS в андроид студии.В моем коде кнопка «ввод» принимает ввод графика и при нажатии кнопки «готово» должен запускаться алгоритм BFS и показывать уровень [] каждого узла в textView или в любом случае.Как новичок, я не могу вызвать метод другого класса с помощью onClickListener.Я использую эмулятор.В этом коде при нажатии кнопки «Готово» приложение перестало работать.
package com.example.sample;
import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.Console;
import java.util.Iterator;
import java.util.LinkedList;
public class MainActivity<editText> extends AppCompatActivity{
private EditText X , Y;
private Button enter , done;
private TextView textView;
public static int level[];
Graph G = new Graph();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
X = (EditText) findViewById(R.id.uId);
Y = (EditText) findViewById(R.id.vId);
enter = (Button) findViewById(R.id.enterId);
done = (Button) findViewById(R.id.doneId);
textView = (TextView) findViewById(R.id.textViewId);
enter.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String A = X.getText().toString();
String B = Y.getText().toString();
Integer x = Integer.parseInt(A);
Integer y = Integer.parseInt(B);
if (v.getId() == R.id.enterId) {
G.addEdge(x, y);
G.addEdge(y, x);
textView.setText(x+" "+y);
//X.setText("");
//Y.setText("");
}
}
});
done.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (v.getId() == R.id.doneId) {
G.BFS(0);
//Show level[] array;
}
}
});
}
public static class Graph{
public static int V=10;
private LinkedList<Integer> adj[];
// Constructor
Graph() {
int v = V;
adj = new LinkedList[v];
for (int i = 0; i < v; ++i) {
adj[i] = new LinkedList();
}
}
void addEdge(int v, int w) {
adj[v].add(w);
}
void BFS(int s) {
boolean visited[] = new boolean[V];
LinkedList<Integer> queue = new LinkedList<Integer>();
visited[s] = true;
queue.add(s);
while (queue.size() != 0) {
s = queue.poll();
System.out.print(s + " ");
Iterator<Integer> i = adj[s].listIterator();
while (i.hasNext()) {
int n = i.next();
if (!visited[n]) {
visited[n] = true;
level[n] = level[s]+1;
queue.add(n);
}
}
}
}
}
}