【问题标题】:cast a class to an activity将课程投射到活动中
【发布时间】:2013-07-31 12:36:36
【问题描述】:

我正在尝试创建一个 listView,它使我能够打开我之前创建的 2 个其他活动。我的意图有问题。我很确定它确实理解 Lactivity 是一项已经存在的活动。你能解释一下为什么吗?

public ListMenu extends Activity {

private ListView malistView;

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

    // create list of elements
    List<ElementOfConstruction> liste = new ArrayList<ElementOfConstruction>();

    String Columns = null;
    Class<?> CalculColumns = null;
    ElementOfConstruction columns = new ElementOfConstruction(Columns, 0, R.drawable.columns, CalculColumns, 100);
    liste.add(columns);
    String Beam1 = null;
    Class<?> CalculBeam = null;
    ElementOfConstruction beam1 = new ElementOfConstruction(Beam1, 0, R.drawable.beam1, CalculBeam, 200);

    //Récupération de la listview créée dans le fichier main.xml  
    malistView = (ListView) findViewById(R.id.malistview);

    ArrayAdapter<ElementOfConstruction> adapter = new ArrayAdapter<ElementOfConstruction>(ListMenu.this,
            R.layout.row_list, R.id.name, liste);

    // Affecter l'Adapter à notre ListView
    malistView.setAdapter(adapter);

    malistView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            //On récupère le titre de l'Item dans un ElementOfConstruction


            //start new activity
            //récupération de l’item sélectionné
            ElementOfConstruction element = (ElementOfConstruction)malistView.getAdapter().getItem(position);

            Class<?> Lactivity = element.getActivity();
            int numIdentification = element.getNumIdentification();

            //open a new activity
            Intent intent = new Intent(ListMenu.this, Lactivity.class);
            startActivityForResult(intent,numIdentification);
        }
    });
}}

【问题讨论】:

  • 您面临的问题是什么?
  • 请提供logcat
  • 您需要发布正在发生的 stacktrace/logcat 错误。它是在编译时还是运行时发生的?
  • 什么是 ElementOfConstruction 类型,返回什么 element.getActivity() 准确返回?更重要的是,某处是否有错误?你到底是什么问题?
  • 我有一个问题,Intent intent = new Intent(ListMenu.this, Lactivity.class); Eclipse 表示“Lactivity 无法解析为一个类型” 我的问题基本上是说 Lactivity 是一个 Activity。

标签: android listview android-intent android-activity


【解决方案1】:

您将 Activity 的类传递给 Intent,而不是 Activity 本身。

改变这一行:

Class<?> Lactivity = element.getActivity();

收件人:

Activity Lactivity = element.getActivity();

【讨论】:

  • 问题是“elment”是 ElementofConstruction 的一个对象,它基本上是:public class ElementOfConstruction { private String name; private int numBag; private int icone ; private int numIdentification; private Class&lt;?&gt; anActivity; 我试图写 private Activity anActivity 但 Eclipse 告诉我“Activity 无法解析为一个类型”
  • private Activity anActivity 绝对是要走的路。您必须从 android.app.Activity 导入 Activity。
  • 我必须写Lactivity.getClass()而不是我的意图Lactivity.class
【解决方案2】:

你可以试试这个:

`malistView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
       switch(position)
       {
          case 0:
             intentActivity = Lactivity.class
             break;
          case 1:
             intentActivity = Otheractivity.class
             break;
       }


        //open a new activity
        Intent intent = new Intent(ListMenu.this, Lactivity);
        startActivityForResult(intent,numIdentification);



    }
});`

【讨论】: