С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
just_moment
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 38
1

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

17.12.2013, 23:23. Просмотров 1380. Ответов 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
Ответы с готовыми решениями:

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

При нажатии на пункт меню скрыть его, и показать другой пункт меню
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и...

При нажатии на пункт меню открыть новое активити
Как сделать на андроид 4.0 чтобы при нажатии на пункт меню открывалось новое...

Контекстное меню на ExpandableListView
Здравствуйте! подскажите как правильно определить пункт ExpandableListView...

Контекстное меню RecyclerView
Здравствуйте! Возникла задача создать контекстное меню для recyclerView, при...

2
NiRamz
211 / 211 / 33
Регистрация: 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 и контекстное меню
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из...

Контекстное меню не работает
Доброго времени суток. Я отбираю записи из базы и формирую список в ListView,...

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


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

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

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