2015-06-21 17 views
6

Sto cercando di creare un semplice pulsante che si apre ad una diversa attività:non può risolvere il costruttore (Intent Android)

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

Ecco il mio file 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. 

} 

}  

ho ricevuto un errore:

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

risposta

18

basta sostituire this nel primo parametro con MainActivity.this. come:

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

L'errore è dovuto al fatto che si sta scrivendo in public void onClick(View v), dove 'this' significherà istanza della classe anonima che implementa View.OnClickListener. mentre il primo parametro nel costruttore Intent Intent(Context context, Class<?> cls) richiede il contesto di attività.

0

Sostituire il vostro intento con il sotto di un:

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

+0

Come si fa questa risposta diversa da quella data dal @KrupalShah? In realtà questo è completamente sbagliato. Un 'Activity' non ha il metodo' getActivity() '. Quindi non funzionerà mai. – 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

pacchetto 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 (intento); // Oppure Intent intent = new Intent (getApplicationContext(), emergencyIntent.class);

 } 

}); ## Rubrica ##

Problemi correlati