Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
just_moment
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 38
#1

При долгом нажатии вывести контекстное меню - Программирование Android

17.12.2013, 23:23. Просмотров 1151. Ответов 2
Метки нет (Все метки)

Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы при долгом нажатии на адресную строку, выводилось контекстное меню. Браузер отображается через компонент WebView.

BrowserActivity.java
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class BrowserActivity extends Activity {
WebView webview;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browser);
 
    WebView webView = (WebView) findViewById(R.id.webView);
    
    //Uri data = getIntent().getData();
    //webView.loadUrl(data.toString());
    //webView = (WebView) findViewById(R.id.webview);
    
    // включаем поддержку JavaScript
    webView.getSettings().setJavaScriptEnabled(true);
    // указываем страницу загрузки
    webView.loadUrl("about:blank"); 
    WebView webview = (WebView) findViewById(R.id.webView);
    registerForContextMenu(webview);
  // webView.setWebViewClient(new HelloWebViewClient());
  }
  // чтобы ссылки открывались внутри WebView
  private class HelloWebViewClient extends WebViewClient 
  {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      {
          view.loadUrl(url);
          return true;
      }
  }
  
  @Override
  public void onCreateContextMenu(ContextMenu menu, View v,
           ContextMenuInfo menuInfo) {
           MenuInflater inflateLayout = getMenuInflater();
           inflateLayout.inflate(R.menu.items, menu);
          super.onCreateContextMenu(menu, v, menuInfo);
         }  
         public boolean onContextItemSelected(MenuItem item) {
           switch (item.getItemId()) {
           case R.id.add:
            Toast.makeText(this, "Выбран пункт Добавить в коллекцию", 1000).show();
            showDialog(1);
               break;
              case R.id.back:
            Toast.makeText(this,"Вы вернулись к предыдущему экрану", 1000).show();
            break;
          }
           return super.onOptionsItemSelected(item);
         } 
         
         @Override
         protected Dialog onCreateDialog(int id) {
             return DialogFactory.getDialogById(1, this);
         }
     
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 23:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При долгом нажатии вывести контекстное меню (Программирование Android):

Как показать ProgressDialog при долгом построении UI? - Программирование Android
Есть две активити. При нажатии кнопки в первой активити, происходит переход ко второй. Во второй активити в onCreate строится интерфейс. ...

При нажатии на пункт меню скрыть его, и показать другой пункт меню - Программирование Android
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и показать другой пункт меню? я делаю так : public boolean...

При нажатии на пункт меню открыть новое активити - Программирование Android
Как сделать на андроид 4.0 чтобы при нажатии на пункт меню открывалось новое активити? Всплывающий Toast я смог сделать. но надо сделать...

Контекстное меню на ExpandableListView - Программирование Android
Здравствуйте! подскажите как правильно определить пункт ExpandableListView (группа или элемент группы) на котором было вызвано...

Контекстное меню не работает - Программирование Android
Доброго времени суток. Я отбираю записи из базы и формирую список в ListView, насаживая на каждый элемент событие onClick, чтобы...

Контекстное меню в ListView - Программирование Android
Здравствуйте,выложите пожалуйста рабочий код контекстного меню для listview и напишите пожалуйста куда вставлять этот код.

2
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
18.12.2013, 01:58 #2
Java
1
2
3
4
5
6
.setOnLongClickListener(new OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                return false;
            }
        });
1
just_moment
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 38
18.12.2013, 20:31  [ТС] #3
Спасибо большое. Вроде должно работать правильно, но этого не происходит. Может я что то не так понимаю или делаю. Должно быть (изображение context_ment(true)), а выводит (изображение context_menu). Подскажите, пожалуйста, что не так.

BrowserActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import android.app.Activity;
import android.app.Dialog;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnLongClickListener;
 
 
public class BrowserActivity extends Activity {
WebView webview;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.browser);
 
    WebView webView = (WebView) findViewById(R.id.webView);
    
    //Uri data = getIntent().getData();
    //webView.loadUrl(data.toString());
    //webView = (WebView) findViewById(R.id.webview);
    
    // включаем поддержку JavaScript
    webView.getSettings().setJavaScriptEnabled(true);
    // указываем страницу загрузки
    webView.loadUrl("about:blank"); 
    WebView webview = (WebView) findViewById(R.id.webView);
    registerForContextMenu(webview);
  
  webview.setOnLongClickListener(new OnLongClickListener() {
      @Override
      public boolean onLongClick(View v) {
          return false;
      }
  });
  }
  
  @Override
  public void onCreateContextMenu(ContextMenu menu, View v,
           ContextMenuInfo menuInfo) {
           MenuInflater inflateLayout = getMenuInflater();
           inflateLayout.inflate(R.menu.items, menu);
          super.onCreateContextMenu(menu, v, menuInfo);
         }  
         public boolean onContextItemSelected(MenuItem item) {
           switch (item.getItemId()) {
           case R.id.add:
            Toast.makeText(this, "Выбран пункт Добавить в коллекцию", 1000).show();
            showDialog(1);
               break;
              case R.id.back:
            Toast.makeText(this,"Вы вернулись к предыдущему экрану", 1000).show();
            break;
          }
           return super.onOptionsItemSelected(item);
         } 
         
         @Override
         protected Dialog onCreateDialog(int id) {
             return DialogFactory.getDialogById(1, this);
         }
     
 
}
DialogFactory.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class DialogFactory {
 
    public static int DIALOG_ALERT = 0;
 
    /**
     * Фабричный метод возвращающий
     * диалог по его коду
     *
     * @param id      код диалога
     * @param context
     * @return диалог соответствующий коду
     */
    public static Dialog getDialogById(int id, final Context context) {
        Dialog dialog = null;
        switch (id) {
            case 1:
                dialog = createInpuAler(context);
                break;
        }
 
        return dialog;
    }
 
    private static Dialog createInpuAler(final Context context) {
        Dialog dialog = null;
 
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
        View layout = inflater.inflate(R.layout.dialog, null);
 
        final EditText address = (EditText) layout.findViewById(R.id.address);
        boolean d = address.requestFocus();
        Log.e("myaddress", new Boolean(d).toString()); //возвращает true
        
        
        final EditText comment = (EditText) layout.findViewById(R.id.comment);
        boolean c = comment.requestFocus();
        Log.e("mycomment", new Boolean(c).toString());
 
        DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
             String input = address.getText().toString();
                Toast.makeText(context, input, Toast.LENGTH_SHORT).show();
            String com = comment.getText().toString();
            Toast.makeText(context, com, Toast.LENGTH_SHORT).show();
            }
        };
 
        dialog = builder.setPositiveButton("Добавить", onClickListener).setView(layout).create();
 
        return dialog;
    }
}
0
Миниатюры
При долгом нажатии вывести контекстное меню   При долгом нажатии вывести контекстное меню  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 20:31
Привет! Вот еще темы с ответами:

ListView и контекстное меню - Программирование Android
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из которого оно было вызвано? Пытался сохранить пункт в...

Контекстное меню вместо опционального - Программирование Android
Здравствуйте! Подскажите, возможно ли сделать так, чтобы при нажатии кнопки меню на телефоне, вместо опционального меню открывалось...

При нажатии на элемент ListView вывести новое Activity с информацией об этом элементе - Программирование Android
Здравствуйте! Помогите пожалуйста! В общем есть список ListView с названиями кафе и ресторанов, надо сделать так чтобы при нажатии на...

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar - Программирование Android
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? @Override public boolean onCreateOptionsMenu(Menu menu)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru