2

几天前,我在Action Bar根据以下结果更新菜单图标时遇到问题AsyncTask由于 AsyncTask 结果而立即更新操作栏菜单项

现在我意识到这个问题根本与 anAsyncTask或 an无关Action Bar。如果我想更改 aTextView或任何其他View.

经过一段时间的反复试验,我意识到问题是由我在Activity调用第二个Activity(我想更改图标的地方)中使用的 overridePendingTransition 引起的:

首先Activity(在 onItemClick 方法中):

@Override
   public void onItemClick(View view, int position) {
   ...
   Intent intent = new Intent(getActivity(), SecondActivity.class);
   ...
   startActivityForResult(intent, anyValue);
   getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.no_animation);
}

动画看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
            android:duration="@android:integer/config_shortAnimTime"/>
</set>

这就是第二个 Activity 的 AsyncTask (onPostExecute) 的样子:

@Override
public void onPostExecute(String result) {
   super.onPostExecute(result);
   if (mMenu != null) {
      if (result.equals("no favorite")) {
      ...
      mMenu.findItem(R.id.action_favorite).setVisible(false);
      mMenu.findItem(R.id.action_no_favorite).setVisible(true);
   } else {
      ...
      mMenu.findItem(R.id.action_favorite).setVisible(true);
      mMenu.findItem(R.id.action_no_favorite).setVisible(false);
   }
}

如前所述,您也可以使用一个 TextView 并根据结果设置文本,而不是在两个菜单图标之间切换 - 问题仍然存在。

你知道我怎样才能改变动画而不会在我的第二次出现这种奇怪的延迟Activity吗?

4

1 回答 1

0

检查您的integer.xml文件根据您的需要使config_shortAnimTime的值更小。它以毫秒为单位。 更喜欢将其设为 1000(1 秒)。

于 2015-03-30T11:42:18.083 回答