2016-11-04 2 views
0

Ich möchte eine Ansicht von RecognizerIntent in Android überschreiben. Um dies zu tun, ich versuche, die RecognizerIntent Klasse in Android zu erweitern, wie folgt:erweitern Klasse mit privaten Konstruktor in anderen Paket

package com.example.myapp; 

import android.content.Context; 
import android.speech.RecognizerIntent; 

public class RecInt extends RecognizerIntent { 

    public RecInt(Context c) { 
     super(c); 
//if I don't call super here, there is an error 'There is no default constructor available in RecognizerIntent' 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_recint); 
    } 
} 

Aber ich erhalte den Fehler

RecognizerIntent() in android.speech.RecognizerIntent nicht öffentlich ist, kann nicht von außerhalb Paket zugegriffen werden.

Gibt es eine Möglichkeit, eine nicht öffentliche Klasse noch zu erweitern?

Ich möchte, dies zu tun, so dass, wenn RecInt gestartet

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
startActivityForResult(intent,100); 

der Blick in setContentView(R.layout.activity_recint) zeigt sich, anstelle der RecognizerIntent Ansicht.

+1

Umm. 'public class RecognizerIntent extends Objekt' ... –

+1

Ändern Sie das Paket von' RecInt' in 'android.speech' –

+3

Ich bin mir nicht sicher, was Sie versuchen zu tun, aber' RecognizerIntent' ist weder ein 'View' noch eine 'Aktivität'. –

Antwort

1

RecognizerIntent() ist nicht öffentlich

Der Konstruktor nicht öffentlich ist. The class is public

Sie können die Klasse erweitern, aber Sie können super nicht aufrufen. Es ist unklar, warum Sie dies tun oder einen Kontext angeben. Es ist nicht, dass Konstruktor

plus zu bieten scheint, ist diese Klasse nicht eine Aktivität, so dass alle, die Code onCreate ist einfach falsch

+0

Ich schrieb super, da sonst der Fehler 'Es gibt keinen Standardkonstruktor in RecognizerIntent' angezeigt wird. Irgendwelche anderen Ideen, wie ich die Ansicht in RecognizerIntent noch erweitern könnte? Ich habe etwas mehr Kontext hinzugefügt, warum ich die Ansicht ändern möchte –

+1

Das ist nicht ganz richtig. Sie können eine Klasse nicht erweitern, die nur private Konstruktoren hat. –

+0

@MikeM. Wie meinst Du das? –

Verwandte Themen