2017-09-09 3 views
0

私は2つのクラスを持っており、どちらもActivityに拡張されています。アクティビティをオーバーライドして起動するにはどうすればいいですか?

MainActivity.java

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout activityLayout = new LinearLayout(this); 
     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.MATCH_PARENT); 
     activityLayout.setLayoutParams(lp); 
     activityLayout.setOrientation(LinearLayout.VERTICAL); 
     activityLayout.setPadding(16, 16, 16, 16); 
     activityLayout.addView(new Button(this)); 
     setContentView(activityLayout); 

     new Permissions() { 
      @Override 
      public void onPermissionRefused() { 
       Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show(); 
      } 
     }.requestPermissions(this); 
    } 
} 

私が何をしたいのかPermissions.java

public class Permissions extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setTheme(R.style.AppTheme_Dialog); // Custom theme to make Activity like a Dialog 
     super.onCreate(savedInstanceState); 
     onPermissionRefused(); 
    } 

    public void requestPermissions(Activity activity, String... permissions) { 
     startActivity(new Intent(activity, Permissions.class)); 
    } 

    public void onPermissionRefused() { 

    } 
} 

それはonPermissionRefused()方法だオーバーライドながらPermissionsActivityを開始しています。しかし、どちらの方法も私が試したことはありません。

new Permissions() { 
      @Override 
      public void onPermissionRefused() { 
       Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show(); 
      } 
     }.requestPermissions(this); 

はオーバーライドに合格しないとしてそのコードをスワップアウト:startActivity(new Intent(this, Permissions.class));することも私はメソッドをオーバーライドすることはできません。どうすればこれを達成できますか?

答えて

0

できません。アクティビティはマニフェストで宣言する必要があります。匿名の内部クラスを宣言することはできません(親に暗黙の参照があるため、可能であれば正しいコンストラクタを持てません)。必要な場合は、実際のサブクラスを作成し、インテントを介して必要な変数を渡します。

1

ステップ1.次のようにアプリケーションにサブクラス化する権限

class MyPermissionsActivity extends Permissions { 
      @Override 
      public void onPermissionRefused() { 
       Toast.makeText(getBaseContext(), "Refused", Toast.LENGTH_SHORT).show(); 
      } 

} 

ステップ2.宣言マニフェスト

ステップ3.起動アクティビティのサブクラスを作成します。

Intent i = new Intent(context, MyPermissionsActivity.class); 
currentActivity.startActivity(i); 
関連する問題