我为我的应用程序实现了一个“主屏幕”,它包含一个包含图标和文本的网格视图。这工作正常,我可以添加一个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
答案 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)
上下文应该是当前活动的背景。 “这个”会令人钦佩。