将意图用于非活动类

时间:2012-03-24 10:31:25

标签: java android

在尝试了很多后我决定在stackoverflow上提问,我创建了一个类,用于使用按钮点击并从这个类开始一个意图。

import android.app.Activity;
import android.content.Intent;
import android.view.View;

public class OnClickListener implements android.view.View.OnClickListener{

    Activity current;
    Object goTo;

    public OnClickListener(Activity arg0, Activity arg1){
        this.current = arg0;
        this.goTo = arg1;
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(current, goTo.getClass());
        current.startActivity(intent);
    }

}

并传递参数如下:

Button button = (Button)findViewById(R.id.class2_btn);
        Class2 class2 = new Class2();
        OnClickListener listener = new OnClickListener(class1.this, class2);
        button.setOnClickListener(listener);

为什么这不起作用?单击按钮后为什么这不是下一堂课? 请帮帮我。

2 个答案:

答案 0 :(得分:0)

我想在这里指出一些观点:

  1. 正如您使用的是 startActivty(),正如您在此处尝试的那样,名称表示它不适用于简单类的活动。活动就像您可以启动的UI,但简单的类就像一个模型类,他们不会像活动那样开始。
  2. 如果您将使用活动代替课程,那么它将无效地工作。在这种情况下,您不需要传递任何参数,只需您可以直接给出名称,如下所示:
  3. Intent intent = new Intent(current_activity.this,target_activty.class); current.startActivity(意向);

    1. 如果您 class2 是一个活动,那么您应该直接将它直接提供给startActivty(),因为我在上面指出的不是像你那样的对象。并且还将此活动分配到清单文件中。

答案 1 :(得分:0)

您应该发布整个代码,并使用更具描述性的名称,而不是Class1Class2。无论如何,如果您的代码编译,Class1Class2都是Activity的后代,因为OnClickListener构造函数只允许这样做。

由于您以XML格式声明了按钮,我建议您添加

android:onClick="goToActivity2"

到您的布局,然后是当前活动

以下内容
public void goToActivity2(View button) {
  startActivity(new Intent(this, Activity2.class));
}

它更精致,代码更少。无论如何,你应该真的回顾你的问题。