Метод 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);