Форум программистов, компьютерный форум CyberForum.ru

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

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

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

17.12.2013, 23:23. Просмотров 1071. Ответов 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);
         }
     
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 23:23     При долгом нажатии вывести контекстное меню
Посмотрите здесь:
Android Как показать ProgressDialog при долгом построении UI?
При нажатии на пункт меню открыть новое активити Android
Android ListView и контекстное меню
Android Контекстное меню не работает
Android Контекстное меню в ListView
Android контекстное меню на ExpandableListView
Android Контекстное меню вместо опционального
Android При нажатии на элемент ListView вывести новое Activity с информацией об этом элементе
Android Ошибка при нажатии
Вылет при нажатии кнопки Android
Android Действие при нажатии на ссылку
Android Ошибка при нажатии на кнопку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
            }
        });
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;
    }
}
Миниатюры
При долгом нажатии вывести контекстное меню   При долгом нажатии вывести контекстное меню  
Ответ Создать тему
Опции темы

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