0

我为我的应用程序实现了一个“主屏幕”,它由一个包含图标和文本的网格视图组成。这很好用,我可以添加一个 OnItemClickListener,例如,点击一个图标将创建一个 toast。但我不确定如何从这里调用 startActivityForResult() 。我可以传入应用程序上下文并使用它来创建意图等,但这感觉不是正确的做法。

我的代码如下所示:

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

4

3 回答 3

1

方法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;
        }
    }
});

方法二

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

方法三

拥有一个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);
于 2012-02-25T16:56:50.020 回答
0

只需使用

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

一切都很容易

于 2012-02-25T16:57:42.757 回答
0

上下文应该是当前活动的上下文。'这'会很好地工作。

于 2012-02-25T16:59:38.153 回答