【问题标题】:Make ListFragment open a Activity让 ListFragment 打开一个 Activity
【发布时间】:2015-09-24 19:45:44
【问题描述】:

好吧,总的来说,我对 android studio 和 android app dev 很陌生,但我想制作一个应用程序,我的青年运动可以将其用作某种数据库,但我遇到了问题。

所以我有一个包含所有组的抽屉,如果您按下抽屉按钮,它会打开一个带有名称的 ListFragment,我想要发生的是当我按下名称时,一个活动会显示名称、照片和电话号码.但我似乎无法弄清楚如何从该 listFragment 打开一个活动。

这里是 ListFragment.java

package app.jarifile.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

/**
* Created by User on 23/09/2015.
*/
public class Givers_Fragment extends ListFragment {

Intent i;

String[] listitems = {
        "(Takleider)",
        "(Takleider)",
        "(Leider)",
        "(Leider)"
};
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
}

@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, listitems));
}

@Override
public void onListItemClick(ListView l, View v, int position, long id){

    switch(position){
        case 0:
            i = new Intent(getActivity(), Test_Activity.class);
            break;
        case 1:
            i = new Intent(getActivity(), Test_Activity.class);
            break;
        case 2:
            i = new Intent(getActivity(), Test_Activity.class);
            break;
    }
    startActivity(i);
}

这是 Test_Activity 代码。

package app.jarifile.test;

import android.app.Activity;
import android.os.Bundle;



/**
* Created by User on 24/09/2015.
*/

public class Test_Activity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_layout);
}

logcat 是这么说的

09-28 18:48:28.915 24081-24081/app.jarifile.test E/AndroidRuntime: FATAL EXCEPTION: main 进程:app.jarifile.test,PID:24081 android.content.ActivityNotFoundException:找不到显式活动类 {app.jarifile.test/app.jarifile.test.Test_Activity};您是否在 AndroidManifest.xml 中声明了此活动? 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1793) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1515) 在 android.app.Activity.startActivityForResult(Activity.java:4026) 在 android.app.Activity.startActivityForResult(Activity.java:3973) 在 android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:748) 在 android.app.Activity.startActivity(Activity.java:4297) 在 android.app.Activity.startActivity(Activity.java:4265) 在 app.jarifile.test.Givers_Fragment.onListItemClick(Givers_Fragment.java:51) 在 android.support.v4.app.ListFragment$2.onItemClick(ListFragment.java:58) 在 android.widget.AdapterView.performItemClick(AdapterView.java:339) 在 android.widget.AbsListView.performItemClick(AbsListView.java:1544) 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:3721) 在 android.widget.AbsListView$3.run(AbsListView.java:5660) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:6837) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 09-28 18:48:31.635 24081-24081/app.jarifile.test I/Process: 发送信号。 PID:24081 SIG:9

感谢您的帮助。

【问题讨论】:

  • 选择列表项时发生了什么?没有?你的应用会崩溃吗?
  • 应用程序崩溃是的。
  • 你能发布应用崩溃时产生的堆栈跟踪吗?它应该可以通过检查adb log 命令的输出或查看Android Studio 中的“Android”窗口来获得。此外,崩溃的一个潜在原因是您没有理由按下列表中的最后一项(索引 3)。因此,您将尝试使用未初始化的Intent 调用startActivity()
  • 我不太明白你的意思?我对这个和一般的编码真的很陌生,我将如何找到并发布它?
  • “无法找到明确的活动类 {app.jarifile.test/app.jarifile.test.Test_Activity};您是否在 AndroidManifest.xml 中声明了此活动?”

标签: android


【解决方案1】:

您尚未在 AndroidManifest.xml 中声明 Test_Activity。您的应用程序中的所有活动都必须在此处声明。下面是一个可能看起来像的示例:

 <manifest ... >
    <application ... >
      <activity android:name=".Test_Activity" />
      ...
    </application ... >
  ...
  </manifest>

http://developer.android.com/guide/components/activities.html#Declaring

【讨论】:

    【解决方案2】:

    尝试将 startActivity(i) 替换为 getActivity().startActivity(i)

    【讨论】:

    • 感谢您的回答,但这似乎对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2021-05-19
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多