小编Pet*_*teH的帖子

PreferenceActivity actionbar主页图标不会返回主页(不像ET :)

除了一件事,我的PreferenceActivity工作得很好.ActionBar图标完美地将用户返回到我所有其他活动中的上一个活动,但在PreferenceActivity中不起作用.当我点击图标时,它会闪烁,好像它将返回上一个活动,但PreferenceActivity保留在屏幕上.有趣的是,后退按钮确实将用户返回到上一个活动.有没有办法让ActionBar的Home图标在PreferenceActivity中"正常"工作?

这是代码:

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  // Set actionBar controls for Settings
    TextView actionBarTitle = (TextView) findViewById(Resources.getSystem().getIdentifier("action_bar_title", "id", "android"));
    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);  
    actionBar.setIcon(R.drawable.ic_launcher); 
    actionBar.setDisplayShowTitleEnabled(true); 
    actionBarTitle.setTextColor(Color.WHITE);
    actionBarTitle.setTextSize(16); 
    actionBar.setTitle(R.string.settings_menu_title);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {  //Build.VERSION_CODES.ICE_CREAM_SANDWICH
        actionBar.setHomeButtonEnabled(true); 
        actionBar.setDisplayHomeAsUpEnabled(true); // show back arrow on title icon
        actionBar.setDisplayShowHomeEnabled(true);
    }
...... Handle prefs (all working fine).....
   }
Run Code Online (Sandbox Code Playgroud)

}

//////和电话代码////////

 //Use menu button to access settings screen
    @Override
   public boolean onKeyDown(int keycode, KeyEvent e) { …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-actionbar

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

签名导出的Android应用程序失败,apache.commons.logging类无法转换为'aaaac'

当我从Eclipse"运行为Android应用程序"时,我的应用程序运行完美.在过去,我还成功导出了应用程序的签名版本.

现在,突然导出的应用程序版本立即崩溃.关键信息似乎是

引起:aaaab:所选的LogFactory实现不会扩展LogFactory.请检查您的配置.(由java.lang.ClassCastException引起:应用程序已指定应使用自定义LogFactory实现,但Class'org.apache.commons.logging.impl.LogFactoryImpl'无法转换为'aaaac'.请检查自定义实现.可以在http://commons.apache.org/logging/troubleshooting.html找到帮助.).

以下是Proguard设置.我错过了什么吗?

-dontwarn org.apache.** 
-dontwarn org.apache.commons.logging.**
-ignorewarnings 
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
Run Code Online (Sandbox Code Playgroud)

apache.org DOC说:

只有在运行时动态加载的实现类可以强制转换为加载它的LogFactory类时,才能使用自定义LogFactory实现.有几种方法可以使这个演员失败.最明显的是源代码实际上可能不会扩展LogFactory.源可能是兼容的,但如果编译源的LogFactory类不是二进制兼容的,则转换也将失败.

还有另一种更不寻常的方式,这种方法可能会失败:即使二进制文件兼容,运行时加载的实现类也可能链接到LogFactory类的不同实例.有关更多信息,请参阅技术指南.

在使用自定义LogFactory实现的容器中可能会遇到这种情况.该实现通常将与JCL一起在共享的高级类加载器中提供.当应用程序类加载器包含LogFactory时,将从该更高级别的类加载器加载实现.实现类将链接到更高级别的类加载器加载的LogFactory类.即使LogFactory实现是二进制兼容的,由于它们由不同的类加载器加载,因此两个LogFactory类实例不相等,因此转换必须失败.

他们继续说可能的修复包括:

有多种方法可以解决这个问题.哪种修复是正确的取决于具体情况.

如果您对使用应用程序的另一个类加载策略感到满意,请选择一个类加载策略,以确保从包含自定义实现的共享类加载器加载LogFactory.

如果要绕过容器适配机制,请在启动容器时将相应的系统属性设置为默认值:

-Dorg.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.LogFactoryImpl

如果要继续使用默认容器机制,则:•查找并替换容器使用的commons-logging实现与最现代的版本•使用commons-logging-adapters jar替换应用程序中的commons-logging jar.这将确保应用程序类加载器在加载LogFactory时将委托给它的父级.

我认为"-Dorg.apache.commons ......"命令会进入proguard-project.txt文件,但这导致应用程序甚至无法构建.所以底线,我不明白apache试图说什么,我希望你们中的一些经验丰富的人可以提供一些清晰度/指导.

这是堆栈跟踪:

07-22 02:49:32.109: E/AndroidRuntime(13589): FATAL EXCEPTION: AsyncTask #1
07-22 02:49:32.109: E/AndroidRuntime(13589): java.lang.RuntimeException: An error occured while executing doInBackground()
07-22 02:49:32.109: E/AndroidRuntime(13589):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-22 02:49:32.109: E/AndroidRuntime(13589):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-22 02:49:32.109: E/AndroidRuntime(13589):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-22 02:49:32.109: E/AndroidRuntime(13589):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-22 02:49:32.109: E/AndroidRuntime(13589):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-22 02:49:32.109: E/AndroidRuntime(13589):    at …
Run Code Online (Sandbox Code Playgroud)

android proguard apache-commons

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

自定义ArrayAdapter getView没有被调用 - 为什么不呢?

我在另一个Activity类中使用了相同的模式,它完美地运行.但是在这个类(也是一个Activity)中,从不调用getView .我通过记录fbFriendMatchAdapter.getCount()确认适配器中有9个项目.我已经尝试将数据源更改为String []变量,但这对getView的(缺少)没有影响.

我很感激任何建议!我已经彻底研究过了.这个问题有很多种,但都没有解决我的问题.这就是我发布新问题的原因.

//Here is the ArrayList data source definition.
//It is loaded using a for loop with 9 values.
private List<String> fbFriendMatchAdapter=new ArrayList<String>();


// Here is the Custom Array Adapter
ArrayAdapter<String> fbFriendMatchAdapter = new ArrayAdapter<String>(this,
        R.layout.row_left, R.id.ListViewName, fbFriendPotentialMatchArrayList) { 

    @Override
    public View getView(final int dialogPosition, View convertView, ViewGroup listParent) {
        LayoutInflater inflater = getLayoutInflater();
        View fbFriendMatchDialogViewRow = inflater.inflate(R.layout.row_left, listParent, false); 
        Log.d(BBTAG, String.format("BBSetup getView[%s] name=%s", dialogPosition, buddyDisplayName ));

        return fbFriendMatchDialogViewRow;
    }  // [END getView]

    @Override
    public String …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter

3
推荐指数
1
解决办法
8145
查看次数