在OnItemClickListener()中调用startActivityForResult()

时间:2012-02-25 16:48:39

标签: android android-intent android-activity android-gridview

我为我的应用程序实现了一个“主屏幕”,它包含一个包含图标和文本的网格视图。这工作正常,我可以添加一个OnItemClickListener,以便点击一个图标将创建一个吐司,例如。但我不知道如何从这里调用startActivityForResult()。我可以传入应用程序上下文并使用它来创建intent等,但这并不是正确的做法。

我的代码如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            switch(position){
            case 0:
                //need to start new activity 1 from here
                break;
            case 1:
                //need to start new activity 2 from here
                break;
            }
        }
    });

感谢您的帮助,

TLB

3 个答案:

答案 0 :(得分:0)

方法1(我的首选方法)

传递ActivityName.this作为上下文是我这样做的方式。例如

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        switch(position){
        case 0:
            Intent intent = new Intent(MyActivity.this, NextActivity.class);
            startActivityForResult(intent, 0);
            break;
        case 1:
            //need to start new activity 2 from here
            break;
        }
    }
});

方法2

您可以传递getApplicationContext()作为上下文;

方法3

拥有Context mContext字段是一种常用方法。在onCreate开头设置,然后使用mContext开始您的活动。

private Context mContext;

然后

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    mContext = this;

    ...
 }

然后,您可以使用mContext作为上下文参数

开始新活动
Intent intent = new Intent(mContext, NextActivity.class);
startActivityForResult(intent, 0);

答案 1 :(得分:0)

只需使用

startActivityForResult(new Intent(MainActivity.this, Activity1.class));

一切都很简单

答案 2 :(得分:0)

上下文应该是当前活动的背景。 “这个”会令人钦佩。