2017-09-09 9 views
0

두 클래스 모두 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() 메소드의 오버라이드 (override)하는 동안 PermissionsActivity을 시작합니다. 그러나 두 가지 방법 중 어느 것도 작동하지 않았습니다.

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

는 재정을 통과하지 않습니다와 함께 그 코드를 교환 : startActivity(new Intent(this, Permissions.class)); 심지어 나를 메소드를 오버라이드 (override) 할 수 없습니다. 이것을 어떻게 할 수 있습니까?

답변

0

수 없습니다. 액티비티는 매니페스트에서 선언해야하며, 익명의 내부 클래스를 선언 할 수는 없습니다. (가능하다하더라도 부모에 대한 암시적인 참조로 인해 올바른 생성자가 없을 수도 있습니다.) 필요한 경우 실제 서브 클래스를 만들고 필요한 변수를 인 텐트를 통해 전달하십시오.

1

1 단계 다음과 같이 애플리케이션 매니페스트

3 단계 실행 활동에 서브 클래스 권한

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

} 

2 단계 선언의 서브 클래스를 생성합니다

Intent i = new Intent(context, MyPermissionsActivity.class); 
currentActivity.startActivity(i);