【问题标题】:Display list of active (running) applications in a list view在列表视图中显示活动(运行)应用程序的列表
【发布时间】:2013-04-02 03:07:45
【问题描述】:

我正在尝试编写一个显示正在运行的应用程序列表的应用程序。我为此使用了活动管理器。在运行应用程序时,它显示以下错误。错误日志中的“未处理的事件循环执行”并且应用程序被强制关闭。

请帮我找出我的错误。 我的代码如下。

public class ActiveApplicationsActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
        List<ActivityManager.RunningAppProcessInfo> l = am.getRunningAppProcesses();

        String[] sl = (String[]) l.toArray();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sl);

        setListAdapter(adapter);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
    }
}

我正在添加logcat信息

02-01 10:52:47.790: D/AndroidRuntime(333): 关闭虚拟机 02-01 10:52:47.790: W/dalvikvm(333): threadid=1: 线程退出未捕获异常 (group=0x40015560) 02-01 10:52:47.811: E/AndroidRuntime(333): 致命异常: main 02-01 10:52:47.811: E/AndroidRuntime(333): java.lang.RuntimeException: 无法启动活动 ComponentInfo {com.msat.sd102268.taskmanager.activeapplications/com.msat.sd102268.taskmanager.activeapplications.ActiveApplicationsActivity} : java.lang.ClassCastException: [Ljava.lang.Object; 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.os.Handler.dispatchMessage(Handler.java:99) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.os.Looper.loop(Looper.java:123) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 java.lang.reflect.Method.invoke(Method.java:507) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 02-01 10:52:47.811: E/AndroidRuntime(333): at dalvik.system.NativeStart.main(Native Method) 02-01 10:52:47.811: E/AndroidRuntime(333): 由: java.lang.ClassCastException: [Ljava.lang.Object; 02-01 10:52:47.811: E/AndroidRuntime(333): at com.msat.sd102268.taskmanager.activeapplications.ActiveApplicationsActivity.onCreate(ActiveApplicationsActivity.java:23) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-01 10:52:47.811: E/AndroidRuntime(333): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 02-01 10:52:47.811: E/AndroidRuntime(333): ... 11 更多

【问题讨论】:

  • 请检查日志猫并检查您在哪一行得到错误.... ????
  • 没有指定行号...

标签: android


【解决方案1】:
String[] sl = (String[]) l.toArray();

您根本无法将ActivityManager.RunningAppProcessInfo 转换为String

试试这个

String[] sl = new String[l.size()];
int i = 0;
for(RunningAppProcessInfo info : l)
 sl[i++] = info.getProcessName();// fictional function

或使用List 本身

【讨论】:

  • 我应该如何直接在ArrayAdapter中使用list?请告诉我。
  • 是的..你说的是对的..我不能直接使用arrayadapter中的列表..我使用l.get(i).processName &提取了processName、processId等信息l.get(i).pid 分别。然后我使用自定义 ListAdapter 来显示这些值..感谢您的帮助..您让我知道如何提取这些值..!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多