小编elg*_*gui的帖子

Spinner:当选定项保持不变时,不会调用onItemSelected

我有一个OnItemSelectedListenerfor my Spinner,但是当所选项目与前一个项目相同时,它不会被调用.显然,OnClickListener这不是一个选项Spinner.每次用户点击某个项目时我都需要抓住.任何的想法?

也许这SpinnerActionBar扰乱正常行为的事实?

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.tracklist_menu, menu);
    Spinner spinner = (Spinner) menu.findItem(R.id.option_ordering_spinner)
            .getActionView();
    spinner.setAdapter(mSpinnerAdapter);
    spinner.setSelection(PrefsHelper.getOrderingSpinnerPos(prefs));
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            String str = "selected";
            System.out.println(str);
            if (optionMenuInitialized) {

                switch (position) {
                case 0:
                    // rdm
                    getActivity()
                            .sendBroadcast(
                                    new Intent(
                                            MyIntentAction.DO_RESHUFFLE_PLAYLIST));
                    smp.setCurrentTracklistCursorPos(-1);
                    trackAdapter.notifyDataSetChanged();
                    break;
                case 1:
                    // artist
                    getActivity()
                            .sendBroadcast(
                                    new Intent(
                                            MyIntentAction.DO_ORDER_PLAYLIST_BY_ARTIST)); …
Run Code Online (Sandbox Code Playgroud)

android listener spinner actionbarsherlock android-actionbar

45
推荐指数
6
解决办法
3万
查看次数

RecyclerView适配器notifyDataSetChanged停止花哨的动画

我正在构建一个基于RecyclerView的组件,允许用户通过拖放重新排序项目.一旦我在DragListener端,我需要它在适配器中的位置,以便执行正确的移动,但我只能访问视图.所以这是我在适配器视图绑定中所做的事情:

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
    Track track = mArray.get(position);
    viewHolder.itemView.setTag(R.string.TAG_ITEM_POSITION, position);
}
Run Code Online (Sandbox Code Playgroud)

你觉得这样对吗?因为如果我移动这样的项目:

public void move(int from, int to){
    Track track = mArray.remove(from);
    mArray.add(to, track);
    notifyItemMoved(from, to);
}
Run Code Online (Sandbox Code Playgroud)

然后位置标记不再正确,如果我notifyDataSetChanged(),我失去了花哨的动画.有什么建议吗?

android adapter android-recyclerview

29
推荐指数
2
解决办法
3万
查看次数

通过A2DP/AVRCP发送跟踪信息

我正在尝试通过A2DP/AVRCP发送跟踪信息.现在,音乐完全流式传输,但在"接收器"(即:汽车音频)上,"音轨信息屏幕"是空白的(在那里使用流行的播放器不是这种情况).任何的想法 ?

android bluetooth avrcp a2dp

26
推荐指数
3
解决办法
2万
查看次数

即使api> = 9,也不总是支持均衡器?

在启用均衡器功能之前,我检查api级别以确保它等于或大于9.从我从用户那里获得的报告中,似乎抛出了一些异常:

代码 eq = new Equalizer(0, mp.getAudioSessionId())可以提出:

Caused by: java.lang.UnsupportedOperationException: Effect library not loaded
at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:355)
at android.media.audiofx.Equalizer.<init>(Equalizer.java:149)
Run Code Online (Sandbox Code Playgroud)

并且代码eq.getBandLevelRange()可以引发:

Caused by: java.lang.UnsupportedOperationException: AudioEffect: invalid parameter operation
at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1182)
at android.media.audiofx.Equalizer.getBandLevelRange(Equalizer.java:206)
Run Code Online (Sandbox Code Playgroud)

我不知道是否有解决方案,如果不是,我可以捕获这些异常并禁用均衡器,但我需要知道究竟是什么造成了这种情况,所以我可以通知我的用户而不会让他们感到沮丧.

谢谢你的帮助

android operation equalizer audioeffect

12
推荐指数
1
解决办法
2376
查看次数

注册为音乐播放器

我想在播放器列表中看到我的应用程序("继续操作使用..."),当我尝试打开音频文件时(即从文件浏览器或gmail附件)弹出.以下是我为MainActivity尝试过的intent过滤器:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.MUSIC_PLAYER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.CATEGORY_APP_MUSIC" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <data android:mimeType="audio/mpeg" />
    </intent-filter>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 !

audio android file-association intentfilter android-manifest

10
推荐指数
1
解决办法
5443
查看次数

最近的搜索未显示,自定义建议

我有一个搜索小部件(SearchView),在输入时显示自定义建议.我已经按照官方指南将最近的查询添加到建议中,但我仍然只有自定义建议.
对于每次搜索,我的片段调用此函数(已验证):

private void addQueryToRecent(String query) {
    SearchRecentSuggestions suggestions = new SearchRecentSuggestions(getActivity(),
            MyCustomSuggestionProvider.AUTHORITY,
            MyCustomSuggestionProvider.MODE);
    suggestions.saveRecentQuery(query, "recent");
}
Run Code Online (Sandbox Code Playgroud)

我的建议提供者似乎没问题:

public class MyCustomSuggestionProvider extends SearchRecentSuggestionsProvider {

public final static String AUTHORITY = "com.zgui.musicshaker.provider.MyCustomSuggestionProvider";
public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;

public MyCustomSuggestionProvider() {
    setupSuggestions(AUTHORITY, MODE);
}

@Override
public Cursor query(Uri uri, String[] projection, String sel,
        String[] selArgs, String sortOrder) {
    //retrieves a custom suggestion cursor and returns it
}
}
Run Code Online (Sandbox Code Playgroud)

searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="artist, track …
Run Code Online (Sandbox Code Playgroud)

android search-suggestion

8
推荐指数
1
解决办法
3302
查看次数

增加viewpager smoothscroll持续时间

我正在使用一个ViewPager子类MyPager(几乎相同),我使用它的setCurrentItem(int index, boolean smooth)方法,将smooth参数设置为true.它实际上比参数设置为'false'更平滑,但我想增加动画持续时间以使转换更加明显.

我从不同的帖子收集了一些信息,这个解决方案看起来很完美.我最终得到了这段代码"

MyPager.java:

public class MyPager extends ViewPager {
    public MyPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.enabled = true;
        postInitViewPager();
    }

    private ScrollerCustomDuration mScroller = null;

    /**
     * Override the Scroller instance with our own class so we can change the
     * duration
     */
    private void postInitViewPager() {
        try {
             Class<?> viewpager = ViewPager.class;
                Field scroller = viewpager.getDeclaredField("mScroller");
                scroller.setAccessible(true);
                Field interpolator = viewpager.getDeclaredField("sInterpolator");
                interpolator.setAccessible(true);

                mScroller = new ScrollerCustomDuration(getContext(), …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-viewpager

6
推荐指数
1
解决办法
1万
查看次数

点击通知后关闭状态栏

我的通知包含几个按钮:

  • 1按钮启动主活动(这样做时应该关闭状态栏)
  • 其中4个发送待处理的意图来控制音乐(应该保持状态栏打开)

问题是,第一个按钮没有关闭状态栏...

第一个按钮发送的PendingIntent:

Intent activityIntent = new Intent(smp, MusicShaker.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                    | Intent.FLAG_ACTIVITY_SINGLE_TOP);
activityIntent.setAction(MyIntentAction.DO_LAUNCH_ACTIVITY_FROM_NOTIF);
remoteViews.setOnClickPendingIntent(R.id.notif_album_IV, PendingIntent
            .getActivity(ctxt, 0, activityIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT));
Run Code Online (Sandbox Code Playgroud)

活动已正确启动,但状态栏保持不变并且不会自行关闭.
我错过/误会了一面旗帜吗?我可以从MyActivity.onResume()关闭状态栏progamaticaly吗?
编辑:顺便说一下,通知是由服务推送的

谢谢=)

notifications android statusbar

5
推荐指数
1
解决办法
4377
查看次数

SherlockFragment的ActionBar菜单通胀错误(ClassCastException)

我正在尝试使用这篇文章的解决方案,以便在我的ActionBar中有一个Spinner.我第一次使用ActionBar的NAVIGATION_MODE_LIST,但我不希望使用微调器来浏览槽视图(我将有标签).所以我创建了2 xml:

mode_spinner.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

options.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/menu_mode"
    android:actionLayout="@layout/mode_spinner"
    android:showAsAction="ifRoom"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

然后,试图从我的片段中膨胀它(SherlockFragment)

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.options, menu);
    Spinner spinner = (Spinner) menu.findItem(R.id.menu_mode);
    spinner.setAdapter(mSpinnerAdapter);
    super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)

在运行时,我收到此错误:

java.lang.ClassCastException:com.actionbarsherlock.internal.view.menu.MenuItemWrapper无法强制转换为android.widget.Spinner

任何的想法 ?

android classcastexception actionbarsherlock android-actionbar

2
推荐指数
1
解决办法
3582
查看次数