Я собираюсь разработать приложение для внутренней навигации с помощью студии Android, используя эту библиотеку «Hipster». Hipster предоставляет несколько алгоритмов для поиска и вычисления кратчайшего пути. В моем случае это алгоритм кратчайшего пути Дейкстры.
в Hipster есть упоминание: «Это чистая библиотека Java». Я использую эту библиотеку в Eclipse, и она отлично работает.
мой вопрос,
Я новичок в Android и Android Studio, я пытался реализовать этот код и в Android Studio, но, похоже, он не работает. Я использовал образцы, предоставленные авторами библиотеки.
и я использовал эту зависимость Gradle:
implementation 'es.usc.citius.hipster:hipster-core:1.0.1'
Официальный сайт - http://www.hipster4j.org/
Github - https://github.com/citiususc/hipster
Я использовал этот пример:
Я поместил эту строку, чтобы показать результат в моем приложении для Android, а не в System.out.print.
Toast.makeText(getApplicationContext(), Hipster.createDijkstra(p).search('L'),Toast.LENGTH_LONG).show();
но эта строка выделена, и когда я наводю указатель мыши, Android Studio говорит
Cannot resolve method 'makeText(android.content.Context, es.usc.citius.hipster.algorithm.Algorithm.SearchResult, int)
Вот мой MainActivity.java
package com.example.ireshan.indoor_navigation;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import es.usc.citius.hipster.algorithm.Hipster;
import es.usc.citius.hipster.algorithm.Algorithm;
import es.usc.citius.hipster.graph.GraphBuilder;
import es.usc.citius.hipster.graph.GraphSearchProblem;
import es.usc.citius.hipster.graph.HipsterDirectedGraph;
import es.usc.citius.hipster.graph.HipsterGraph;
import es.usc.citius.hipster.model.problem.SearchProblem;
public class Find_Shortst_Path extends AppCompatActivity {
Context context = getApplicationContext();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find__shortst__path);
TextView helloTextView = (TextView)findViewById(R.id.myTextView);
HipsterGraph<String,Double> graph =
GraphBuilder.<String,Double>create()
.connect("A").to("B").withEdge(2d)
.connect("A").to("C").withEdge(2d)
.connect("A").to("D").withEdge(2d)
.connect("B").to("E").withEdge(5d)
.connect("B").to("F").withEdge(10d)
.connect("B").to("G").withEdge(5d)
.connect("B").to("H").withEdge(10d)
.connect("C").to("I").withEdge(5d)
.connect("C").to("J").withEdge(10d)
.connect("C").to("K").withEdge(5d)
.connect("K").to("L").withEdge(5d)
.createUndirectedGraph();
SearchProblem p = GraphSearchProblem
.startingFrom("A")
.in(graph)
.takeCostsFromEdges()
.build();
//Toast.makeText(context, Hipster.createDijkstra(p).search('L').toString(),Toast.LENGTH_LONG).show();
helloTextView.setText(String.valueOf(Hipster.createDijkstra(p).search('L')));
}
}
Как я могу решить эту проблему? Я собираюсь найти кратчайший путь для действий в торговом центре, например, найти какой-нибудь предмет и добраться до него, используя кратчайший путь. Если вы знаете какой-либо другой способ, он мне поможет.
@ Mandy8055 Можешь объяснить, дружище?
Ожидается, что по второму параметру будет String, но он не обнаружит того же
@ Mandy8055 Что мне делать?
попробуйте добавить к нему метод .toString(). Например: Hipster.createDijkstra(p).search('L').toString(), а затем проверьте его и дайте мне знать !!!
@ Mandy8055 Уважаемый, на этот раз он говорит - Непроверенный вызов 'search (S)' как член необработанного типа 'es.usc.citius.hipster.algorithm.Algorithm' less ... (Ctrl + F1) Сигнализирует о местах, где компилятор выдает непроверенное предупреждение, например: void f (HashMap map) {map.put ("key", "value"); } Подсказка: Pass -Xlint: не отмечен в javac, чтобы получить более подробную информацию.
Это не проблема !!! Просто проблема с реализацией вашего API !!!! Просто проверьте, какой тип возвращаемого значения имеет метод Hipster.createDijkstra(p).search('L'), и попробуйте сохранить его в переменной того же типа. Ваша работа сделана
Попробуйте распечатать результат на textView. Например: textView = (TextView)findViewById(R.id.myTextView); textView.setText(String.valueOf(Hipster.createDijkstra(p).search('L')));.
@ Mandy8055 Вышеупомянутое решение не сработало. Я обновляю свой вопрос, вызывая MainActivity.java
Спасибо @ Mandy8055, вы правы !! еще раз спасибо.




Я определил,
Hipster.createDijkstra(p).search("L").getOptimalPaths();
вывод - это список, когда я использую
.getOptimalPaths();. // Dijkstra's algorithms out put as shortest path
Моя цель заключалась в том, чтобы получить только оптимальный путь, а не весь результат, генерируемый
Hipster.createDijkstra(p).search("L")
затем я вставил этот вывод в "Список"
List ab= Hipster.createDijkstra(p).search("L").getOptimalPaths();
helloTextView.setText(ab.get(0).toString());
И я отправляю вывод в TextViwe. Работает нормально на Andoid
используйте эту зависимость
implementation 'es.usc.citius.hipster:hipster-core:1.0.1'
Проблема не в библиотеке. Это с параметром, переданным методу
Toast.makeText()