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

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

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

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

30.06.2014, 13:04. Просмотров 657. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 13:04     Не работает первый пункт ActionBar Actions
Посмотрите здесь:

Не создаётся ActionBar Android
Не отображается пункт меню в ActionBar Android
Android Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Работа с ActionBar Android
Глюки с ActionBar Android
Android Не работает параметр ShowAsAction"always" для item в actionBar
ActionBar Search Android
Android Управление ActionBar
Android Оформления ActionBar
Android Не работает ActionBar в ListActivity
Android SearchView в ActionBar
Оформление actionbar Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
arslancharyev31
8 / 8 / 1
Регистрация: 30.03.2013
Сообщений: 63
03.07.2014, 19:06     Не работает первый пункт ActionBar Actions #2
Если не трудно, выложите NavigationDrawerFragment.java, activity_editor.xml & fragment_editor.xml. Без них трудно разобраться.
И еще: вы вызываете getMenuInflater().inflate(R.menu.global, menu) в активити, а обрабатываете нажатия в фрагменте. Попробуйте вызвать этот метод в фрагменте(Визуальной разницы не будет)
Yandex
Объявления
03.07.2014, 19:06     Не работает первый пункт ActionBar Actions
Ответ Создать тему
Опции темы

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