#java #android #android-studio
#java #Android #android-studio
Вопрос:
Это код для действия Android, который я хочу запустить, если это вообще возможно, без создания нового действия. Необходимо избавиться от функции прослушивателя. Я попытался создать новый класс Java, но он выдал мне ошибку в функциях putExtra. Также, как я могу справиться с экземпляром newConnection внутри конструктора прослушивателя.
public class NewConnection extends Activity {
private Bundle result = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
private class Listener implements OnMenuItemClickListener {
//used for starting activities
private NewConnection newConnection = null;
public Listener(NewConnection newConnection)
{
this.newConnection = newConnection;
}
Пытаюсь запустить приведенный ниже код, не нажимая:
@Override
public boolean **onMenuItemClick**(MenuItem item) {
{
// this will only connect need to package up and sent back
Intent dataBundle = new Intent();
String server = ("tsp//:server address");
String port = ("1823");
//put data into a bundle to be passed back to ClientConnections
dataBundle.putExtra(ActivityConstants.server, server);
dataBundle.putExtra(ActivityConstants.port, port);
...
...
//add result bundle to the data being returned to ClientConnections
dataBundle.putExtras(result);
setResult(RESULT_OK, dataBundle);
newConnection.finish();
}
return false;
}
Это код, используемый для вызова действия:
createConnection = new Intent();
createConnection.setClassName(
clientConnections.getApplicationContext(),
"org.eclipse.paho.android.service.sample.NewConnection");
clientConnections.startActivityForResult(createConnection,
ActivityConstants.connect);
Комментарии:
1. Все, что я вижу, это конструктор, который присваивает значение своего параметра члену класса. В чем вопрос?
2. Конструктор, который инициализирует переменную newConnection . В чем вопрос на самом деле?
3. Пожалуйста, уточните свой вопрос относительно того, что вы на самом деле спрашиваете
4. Извините, я новичок в java. Вопрос в том, находится ли этот код внутри класса newConnection, создаю ли я другой экземпляр newConnection в текущем экземпляре? А как насчет этого.newConnection = newConnection; что это делает? Заранее спасибо за помощь новичку: P
Ответ №1:
Это базовый конструктор в парадигме слушателя. Основная идея в области информатики заключается в том, что код должен быть повторно используемым, и для облегчения этот код, как правило, должен быть автономным. Это часто делается в Java с помощью слушателя. Обычно это абстрактный класс или интерфейс, который имеет несколько заданных функций. Основному классу, который использует прослушиватель, присваивается этот объект или объекты, и когда он достигает соответствующей точки, прослушиватель запускает уведомление вашего кода о событии.
Это позволяет людям писать полностью закрытый код и при этом предоставлять перехваты событий, благодаря которым другой пользователь, использующий этот код, может получать обратную связь, например, при нажатии на пункт меню или установлении нового соединения, и с этим разбирается человек, использующий этот код, но без автора исходного классазная что-нибудь о вашем коде. Это позволяет использовать такие вещи, как меню, менеджеры соединений и кнопки, которые не имеют никакого отношения к коду, который они запускают, по замыслу. Так что любое их количество может быть создано и использовано.