【问题标题】:Is it possible to use the same code in ImageButton and Button widgets in android?是否可以在 Android 的 ImageButton 和 Button 小部件中使用相同的代码?
【发布时间】:2014-03-10 06:05:27
【问题描述】:

我正在开发一个安卓应用程序。

我的要求是使用由两个不同控件运行的相同代码,一个是 imageButton,第二个是 Button。

为此,我使用的是这种方法。

 public void onClick_Office_Mgmt(View v)
    {
        Intent i=new Intent(Admin_Dashboard.this,Office_Mgmt.class);        
        i.putExtra("USERNAME", unm);        
        startActivity(i);   
    }

我用这个方法来Buttons OnClick 事件。

<Button
            android:id="@+id/btn_office_mgt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="?android:selectableItemBackground"
            android:onClick="onClick_Office_Mgmt"
            android:text="Office Mgt"
            android:textColor="#ff0000"/>

但是当我尝试在 imageButtons OnClick 事件中调用相同的方法时,它会导致错误。

<ImageButton
            android:id="@+id/ibtn_office_mgt"
            android:layout_width="108dp"
            android:layout_height="108dp"
            android:background="?android:selectableItemBackground"
            android:onClick="onClick_Office_Mgmt"
            android:scaleType="fitXY"
            android:src="@drawable/office_icon" />

谁能告诉它为什么会发生?以及如何解决这个问题?

我的 LogCat 错误是:

02-12 05:27:24.134: E/ActivityThread(601): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d1edf0 that was originally bound here
02-12 05:27:24.134: E/ActivityThread(601): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d1edf0 that was originally bound here
02-12 05:27:24.134: E/ActivityThread(601):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
02-12 05:27:24.134: E/ActivityThread(601):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
02-12 05:27:24.134: E/ActivityThread(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
02-12 05:27:24.134: E/ActivityThread(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
02-12 05:27:24.134: E/ActivityThread(601):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
02-12 05:27:24.134: E/ActivityThread(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
02-12 05:27:24.134: E/ActivityThread(601):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-12 05:27:24.134: E/ActivityThread(601):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-12 05:27:24.134: E/ActivityThread(601):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-12 05:27:24.134: E/ActivityThread(601):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-12 05:27:24.134: E/ActivityThread(601):  at java.lang.Thread.run(Thread.java:856)
02-12 05:27:24.153: E/StrictMode(601): null
02-12 05:27:24.153: E/StrictMode(601): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d1edf0 that was originally bound here
02-12 05:27:24.153: E/StrictMode(601):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
02-12 05:27:24.153: E/StrictMode(601):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
02-12 05:27:24.153: E/StrictMode(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
02-12 05:27:24.153: E/StrictMode(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
02-12 05:27:24.153: E/StrictMode(601):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
02-12 05:27:24.153: E/StrictMode(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
02-12 05:27:24.153: E/StrictMode(601):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-12 05:27:24.153: E/StrictMode(601):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-12 05:27:24.153: E/StrictMode(601):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-12 05:27:24.153: E/StrictMode(601):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-12 05:27:24.153: E/StrictMode(601):  at java.lang.Thread.run(Thread.java:856)
02-12 05:27:24.183: W/ActivityManager(285): Unbind failed: could not find connection for android.os.BinderProxy@4144d778
02-12 05:27:24.204: E/ActivityThread(601): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d1f2b8 that was originally bound here
02-12 05:27:24.204: E/ActivityThread(601): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d1f2b8 that was originally bound here
02-12 05:27:24.204: E/ActivityThread(601):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
02-12 05:27:24.204: E/ActivityThread(601):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
02-12 05:27:24.204: E/ActivityThread(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
02-12 05:27:24.204: E/ActivityThread(601):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
02-12 05:27:24.204: E/ActivityThread(601):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId(AccountServiceProxy.java:116)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
02-12 05:27:24.204: E/ActivityThread(601):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
02-12 05:27:24.204: E/ActivityThread(601):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
02-12 05:27:24.204: E/ActivityThread(601):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
02-12 05:27:24.204: E/ActivityThread(601):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
02-12 05:27:24.204: E/ActivityThread(601):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
02-12 05:27:24.204: E/ActivityThread(601):  at java.lang.Thread.run(Thread.java:856)

【问题讨论】:

  • 您遇到了哪个错误?
  • 我遇到了运行时错误。我的应用程序调用 web 服务,但是当我将 Imagebutton 更改为按钮时它不起作用
  • 发布 logcat 错误堆栈跟踪...
  • 当然。现在请检查问题中的日志。
  • 仍然面临问题或问题已解决?

标签: android xml button layout imagebutton


【解决方案1】:

我认为当您使用模拟器进行测试时会出现此问题。更简单的解决方法是在

下的模拟设备中禁用 “Exchange Services”

设置 -> 应用程序 -> 全部

第二种解决方案是,您可以删除当前的模拟器并创建相同的模拟器。有时这可以解决问题。

编辑

如果模拟器中的主机 GPU 已启用,只需将其禁用并重试。

您遇到的问题与模拟器有关。如果您有设备,请尝试在那里检查一次。这将节省您的时间。

【讨论】:

  • 我之前已经通过另一个意图初始化了它。
  • 能否请您添加日志以进一步识别问题
  • 当然。现在请检查问题中的日志。
  • 问题仍然存在,先生。
  • 然后尝试在原始设备中检查一次。
【解决方案2】:

当然有可能。

我认为由于小部件的声明,您有一个错误。

你可以通过方法使用它。

问题是您必须删除按钮和图像按钮的声明。

喜欢

button1=(button)findViewById(R.id.Button1);

【讨论】:

  • 我已经删除了声明并且它起作用了。谢谢兄弟
猜你喜欢
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 2020-09-20
  • 2013-11-03
  • 2011-03-31
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
相关资源
最近更新 更多