在新方法中创建意图

时间:2010-11-17 19:00:15

标签: android button android-activity android-intent

所以我想要启动一个Activity,它只会弹出一个对话框弹出框,告诉用户如何使用该应用程序。

我有代码:

private final View.OnClickListener btnClick = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.about_box:
            Intent i = new Intent(this, About.class);
            startActivity(i);
            break;
        }
    }
}

但意图给了我错误:

  

构造函数Intent(new View.OnClickListener(){},Class)是   未定义

有关解决方法的任何想法吗?

感谢。

5 个答案:

答案 0 :(得分:10)

更改,

Intent i = new Intent(this, About.class);

要,

Intent i = new Intent(TheCurrentClassName.this, About.class);

答案 1 :(得分:2)

问题是你在那里的另一个类中并且正在向Intent传递错误的上下文。你必须传递正确的背景。看一下下面的例子。

// your Activity

public class MyActivity extends Activity {

    Context ctx = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ctx = getApplication();
    }

    private final View.OnClickListener btnClick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.about_box:

                Intent i = new Intent(ctx, About.class);
                startActivity(i);
                break;
            }
        }
    }

答案 2 :(得分:1)

将意图行更改为:Intent intent = new Intent(ClassName.this,theNewClassName.class);

答案 3 :(得分:1)

意图需要一个上下文。但是,在onClick函数中使用此快捷方式未正确解析。在匿名内部类中提供当前上下文的不同方法是 - 使用Context.this代替此。 - 使用getApplicationContext()而不是这个。 - 明确使用类名MenuScreen.this。 调用在正确的上下文级别声明的函数。

答案 4 :(得分:1)

只需更改

Intent i = new Intent(this, About.class);

Intent i = new Intent(Classname.this, About.class);

希望它有效。