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

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

Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 598
#1

Не работает первый пункт ActionBar Actions - Программирование Android

30.06.2014, 13:04. Просмотров 676. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Проблема с Menu в Fragment-е:
Вот код фрагмента:
Кликните здесь для просмотра всего текста
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
72
73
74
75
76
77
78
79
80
81
package com.contedevel.qpicseditor;
 
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
 
public class EditorFragment extends Fragment {
    private static final String TAG = "EditorFragment";
    public static final int REQUEST_CODE_GALLERY = 1;
    public static final int REQUEST_CODE_OPEN_ACTIVITY = 2;
 
    public static EditorFragment newInstance() {
        EditorFragment fragment = new EditorFragment();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
    public EditorFragment() {
        // Required empty public constructor
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        if (getArguments() != null) {
        }
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_editor, container, false);
    }
 
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        Log.d(TAG, "On item selected!");
        if(id == R.id.action_add_file) {
            Intent intent = new Intent();
            intent.setType("image/*")
                  .setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,
                            getString(R.string.title_gallery_selection)),
                    EditorFragment.REQUEST_CODE_GALLERY);
            Log.d(TAG, "Action add file!");
            return true;
        }
 
        if(id == R.id.action_add_folder) {
            startActivity(new Intent(getActivity(), OpenActivity.class));
            Log.d(TAG, "Action add folder!");
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
 
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) {return;}
 
    }
 
}


Вот код активити:
Кликните здесь для просмотра всего текста
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.contedevel.qpicseditor;
 
import android.app.Activity;
 
import android.app.ActionBar;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
 
 
public class MainActivity extends Activity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
    private static final String TAG = "MainActivity";
 
    /**
     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
     */
    private NavigationDrawerFragment mNavigationDrawerFragment;
 
    /**
     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
     */
    private CharSequence mTitle;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_editor);
 
        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
 
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
    }
 
    @Override
    public void onNavigationDrawerItemSelected(int position) {
        // update the main content by replacing fragments
        FragmentManager fragmentManager = getFragmentManager();
        switch (position) {
            case 0:
                fragmentManager.beginTransaction()
                        .replace(R.id.container, EditorFragment.newInstance())
                        .commit();
                break;
        }
 
    }
 
    public void onSectionAttached(int number) {
        switch (number) {
            case 1:
                mTitle = getString(R.string.title_editor);
                break;
            case 2:
                mTitle = getString(R.string.title_section2);
                break;
            case 3:
                mTitle = getString(R.string.title_section3);
                break;
        }
    }
 
    public void restoreActionBar() {
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.global, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        return super.onOptionsItemSelected(item);
    }
 
}


B разметка меню:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
    <item android:id="@+id/action_add_file"
        android:title="@string/action_add_file"
        android:orderInCategory="2"
        android:showAsAction="withText|ifRoom" />
 
    <item android:id="@+id/action_add_folder"
        android:title="@string/action_add_folder"
        android:orderInCategory="3"
        android:showAsAction="withText|ifRoom" />
 
    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never" />
 
</menu>
Меню только одно, но мне нужно обращаться к нему из фрагмента... Проблема в том что не работает add_file, хотя второй пункт работает... Как такое может быть? Нажатие "Add file" не вызывает метод onOptionsItemSelected
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 13:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает первый пункт ActionBar Actions (Программирование Android):

Не отображается пункт меню в ActionBar - Программирование Android
Приветствую, Сделал меню &lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

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

Не работает ActionBar в ListActivity - Программирование Android
Почему ActionBar не отображается? public class FileManager extends ListActivity{ ... @Override public boolean...

Не работает параметр ShowAsAction"always" для item в actionBar - Программирование Android
Такая проблема. В главном activity в меню создаю новый item , присваиваю ему свойство android:showAsAction&quot;always&quot;. Но при запуске...

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

Первый пункт работает, номер минимального элемента массива выводит А дальше все - C#
В одномерном массиве, состоящем из n вещественных элементов, вычислить: • номер минимального элемента массива; • сумму элементов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
arslancharyev31
8 / 8 / 1
Регистрация: 30.03.2013
Сообщений: 63
03.07.2014, 19:06 #2
Если не трудно, выложите NavigationDrawerFragment.java, activity_editor.xml & fragment_editor.xml. Без них трудно разобраться.
И еще: вы вызываете getMenuInflater().inflate(R.menu.global, menu) в активити, а обрабатываете нажатия в фрагменте. Попробуйте вызвать этот метод в фрагменте(Визуальной разницы не будет)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 19:06
Привет! Вот еще темы с ответами:

Почему первый пункт повторяется дважды? - C#
Вот моя программа она находит все пути от первого пункта до второго пункта, но в результате мне выводятся где первый пункт повторяется...

Заменить первый пункт меню на функцию - C++
Не могу заменить первый пункт меню на функцию. // 7.cpp: определяет точку входа для консольного приложения. // #include...

Апгрейд компьютера на ADM Athlon 64 x2 по 2.8 GHz. Пункт первый: замена видеокарты. - Рабочая станция
Здравствуйте. Хотел попросить помочь со сборкой ПК. Сейчас стоит такое железо: 1. Мат. плата: GIGABYTE GA-MA69VM-S2 2. Видео...

Как прописать пространство имён для Actions? - C#
ИСПОЛЬЗУЕТСЯ: C#, WebDriver, Chrome, VisualStudio 2015 Visual Studio Выдаёт ошибку: The type or namespace name 'Actions' could not...


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

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

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