Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 608
#1

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

30.06.2014, 13:04. Просмотров 730. Ответов 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
http://www.cyberforum.ru/android-dev/thread1177989.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 13:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не работает первый пункт ActionBar Actions (Программирование Android):

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? ...

Не работает ActionBar в ListActivity
Почему ActionBar не отображается? public class FileManager extends...

Не работает параметр ShowAsAction"always" для item в actionBar
Такая проблема. В главном activity в меню создаю новый item , присваиваю...

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

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

1
arslancharyev31
8 / 8 / 2
Регистрация: 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
Привет! Вот еще темы с решениями:

PopupMenu - первый пункт 78 символов
Всем привет. Добавляем PopupMenu, создаём несколько пунктов. Пусть 2. И пусть...

Заменить первый пункт меню на функцию
Не могу заменить первый пункт меню на функцию. // 7.cpp: определяет точку...

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

Апгрейд компьютера на ADM Athlon 64 x2 по 2.8 GHz. Пункт первый: замена видеокарты.
Здравствуйте. Хотел попросить помочь со сборкой ПК. Сейчас стоит такое...


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

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

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