2012-03-04 4 views
0

Я знаю, что таких вопросов было много, но ответа я не нашел.Запуск новой активности из класса неактивности

Что у меня есть:

  1. GridView + а ButtonAdapter класс, который также имеет класс OnClickListener получить кнопку Wich на GridView в нажимается. (Вы можете увидеть основную структуру здесь: http://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/)

Что мне нужно:

мне нужно, чтобы начать новый Activity от моего OnClickListener класса. Насколько я знаю, я могу сделать это только в моем классе основной активности (или другом классе, который распространяется на Activity), но это то, что мне действительно нужно. Я знаю только эту структуру:

Intent i = new Intent(MyMain.this, MyNewActivity.class) 
startActivity(i); 

Я хочу, чтобы иметь возможность использовать эту структуру из моего OnClickListener класса.

ответ

3

В вашем конструкторе ButtonAdapter передайте контекст Activity, где вы строите адаптер, а затем используйте это Context, чтобы начать новый Activity.

Edit: После этого урока, когда вы строите ваш адаптер вы будете делать что-то вроде этого:

ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter) 

Context, что вы получите в конструкторе ButtonAdapter вы пройдете его на OnClickListener:

class MyOnClickListener implements OnClickListener 
    { 
    private final int position; 
private Context ctx; 

    public MyOnClickListener(int position, Context ctx) 
    { 
     this.position = position; 
this.ctx = ctx; 
    } 

    public void onClick(View v) 
    { 
     // Preform a function based on the position 
     someFunction(this.position) 
     Intent i = new Intent(MyMain.this, MyNewActivity.class) 
ctx.startActivity(i); 
    } 
    } 

и использовать его как это:

btn.setOnClickListener(new MyOnClickListener(position, mContext)); 
+0

не смог найти способ передачи контекста активности, не могли бы вы написать код примера? – artouiros

+0

@ArthurShniv Я отредактировал свой ответ. – Luksprog

+0

Спасибо, понял. – artouiros

0

Поскольку у вас есть объект View в MyOnClickListener.onClick(), вы можете просто использовать View.getContext() (http://developer.android.com/reference/android/view/View.html#getContext()), чтобы получить объект контекста и начать другое действие.

Смежные вопросы