2016-11-04 13 views
0

アンドロイドのRecognizerIntentのビューを上書きします。次のようにこれを行うために、私は、AndroidでRecognizerIntentクラスを拡張しよう:他のパッケージのプライベートコンストラクタを使用してクラスを拡張する

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

しかし、私はエラー

RecognizerIntentを()取得していますが、android.speech.RecognizerIntentで公開されていない、 はできませんパッケージ外からアクセスできます。

まだ非公開クラスを拡張する方法はありますか?

私はRecInt

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

を起動したときsetContentView(R.layout.activity_recint)のビューではなくRecognizerIntentビューで、最大表示されるように、これを行うにしたいです。

+1

Umm。 'public class RecognizerIntent extends Object' ... –

+1

' RecInt'のパッケージを 'android.speech'に変更します –

+3

あなたは何をしようとしているのかよくわかりませんが、' RecognizerIntent'は 'View'でもなく「アクティビティ」。 –

答えて

1

RecognizerIntentは()

コンストラクタがパブリックではない公共のではありません。 The class is public

クラスを拡張することはできますが、superを呼び出すことはできません。なぜあなたがそうしているのか、あるいはコンテキストを与えているのかは不明です。そのコンストラクタを提供するようには見えない

さらに、そのクラスはアクティビティではないので、onCreateコードはすべて間違っています。

+0

私はsuperを書きました。そうでなければ、 'RecognizerIntentで利用可能なデフォルトのコンストラクタがありません'というエラーが表示されています。 RecognizerIntentでどのようにビューを拡張することができる他のアイデアですか?なぜ私はビューを変更したいいくつかのコンテキストを追加しました –

+1

これは正しくはありません。プライベートコンストラクタだけを持つクラスは拡張できません。 –

+0

@MikeM。どういう意味ですか? –

関連する問題