2015-06-21 8 views
6

Я пытаюсь создать простую кнопку, которая открывает в другой деятельности:не удается разрешить конструктор (Android Intent)

package com.example.xxx.buttonexample; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Button; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 

Button button; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btnClick(); 
} 
public void btnClick() { 
    button = (Button) findViewById(R.id.button1); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(this,emergencyIntent.class); 
      startActivity(intent); 
     } 
    }); 
} 
} 

Вот мой emergencyIntent.class файл:

package com.example.xxx.buttonexample; 

import android.app.Activity; 
import android.os.Bundle; 

public class emergencyIntent extends Activity 
{ 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    // The activity is being created. 

} 

}  

я получил ошибка:

"Cannot resolve constructor 'intent(anonymous android.view.View.OnClickListener, java.lang.Class(com.example.xxx.buttonexample.emergencyIntent))'.

ответ

18

Просто замените this в первом параметре с MainActivity.this. как:

Intent intent = new Intent(MainActivity.this,emergencyIntent.class); 

Ошибка в том, что вы пишете его в public void onClick(View v), где «this» будет означать экземпляр анонимного класса, который реализует View.OnClickListener. в то время как первый параметр в конструкторе Intent Intent(Context context, Class<?> cls) требует контекста работы.

0

Заменить Intent с ниже один:

Intent намерения = новый Intent (MainActivity.this.getActivity(), emergencyIntent.class);

+0

Как этот ответ отличаться от приведенного на @KrupalShah? На самом деле это совершенно неправильно. У 'Activity' нет метода getActivity(). Так что это никогда не сработает. – Sufian

0
package com.example.xxx.buttonexample; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.widget.Button; 
    import android.view.View; 
    import android.view.View.OnClickListener; 

    public class MainActivity extends Activity { 

    Button button; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     button = (Button) findViewById(R.id.button1); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       Intent intent = new Intent(MainActivity.this,emergencyIntent.class); 
startActivity(intent); 
//Or Intent intent = new Intent(getApplicationContext(),emergencyIntent.class); 

      } 
     }); 
    } 
    } 
0

package com.example.xxx.buttonexample;

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Button; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 

Button button; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button1); 
    button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(MainActivity.this,emergencyIntent.class); 

начало деятельности (намерение); // Или намерение намерения = новое намерение (getApplicationContext(), emergencyIntent.class);

 } 

}); ## Заголовок ##

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