2016-06-29 10 views
0

私は自分のアプリケーションをすべて含めるモジュールを作っています。このモジュールでは、onCreateが、すべてのアプリケーションで好きなコードを実行するようにオーバーライドされています(SupportActionBarなど)。私のすべてのアプリケーションで、私はツールバーの要素を維持することに固執していますidtoolbar。実際にIDを与えずに、オーバーライドされた関数がこれにアクセスするようにしたい。私は次のように、自分自身で変数を取得する機能を関連super.onCreate(savedInstanceState, R.id.toolbar)が、super.onCreate(savedInstanceState, R.class)かをしなければならない、と取得する必要はありません:パラメータでAndroid - クラス内のクラスにアクセスする

// In custom parent class 
protected void onCreate(Bundle savedInstanceState, Class r) { 
    super.onCreate(savedInstanceState); 
    Toolbar t = findViewById(r.getClass("id").getInt("toolbar")); 
    setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b, R.class); 
} 
+0

実際のコード例はありますか?また、基本的な[Javaチュートリアル/ドキュメント](https://www.google.com/search?q=official+java+documentation&oq=official+java+documentation&aqs=chrome..69i57j0l3.5638j0j4&sourceid=chrome&ie= UTF-8#q = learn + java)?これは、Androidアプリケーションを構築する最初のステップになるからです。 – codeMagic

+0

正確に何をしたいか教えてもらえますか? –

+0

生成されたリソースクラスRについて、あなたはおそらくR.id.tests_idを取得しています。クラスfooとメソッドバー? –

答えて

0

は、リソースクラスのオブジェクトでなければなりません。だから:

// In custom parent class (extends android.support.v7.app.AppCompatActivity) 
public void doStuff(Resources r) { 
Toolbar t = findViewById(r.getClass("id").getInt("toolbar")) 
setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b); 
    doStuff(getResources()); //we have Resources 
} 

しかし、私は方法のパラメータとしてRを送信する目的をundestandしないでください。このようにすることができます:

// In custom parent class 
public void doStuff() { 
Toolbar t = findViewById(getResources().getClass("id").getInt("toolbar")) 
setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b); 
    doStuff(); 
} 
+0

'Resources'クラスには(少なくともAndroid 6.0では)' getClass(String) '関数がありません。このコードはコンパイルされません。 –

+0

私はAppCompatActivityをチェックして動作します。古いアンドロイド用のアプリケーションを作成する場合は、AppCompatActivityが最適です。 –

+0

Nougat(Mから)まできれいにしました。しかし、このコードはまだ動作しません!私はandroid.support.v7.app.AppCompatActivityを使用しています(これらの疑問を持っている人のために) –

関連する問題