定义泛型方法可以打开所有活动

Moh*_*yan -1 java android

我可以在所有可以打开新活动的活动的父类中定义一个活动,就像这个工作方法一样:

public class ActivityBase extends Activity{
    public <T extends Activity,U  extends Activity> void openActivity()
    {
        Intent myIntent = new Intent(T.this, U.class);
        T.this.startActivity(myIntent);
    }
}

public class ActivityChield extends ActivityBase{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_warning_unregistered_shipping);

        // Set widgets reference
        btnOpenActivity = (Button)findViewById(R.id.btn_wus_select_violation);

        // Set widgets event listener
        setListeners();
    }

    private void setListeners()
    {
        btnOpenActivity.setOnClickListener( new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                openActivity<ActivityChield , OtherActivity>();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码无效.请帮助我如何定义一个可以用一种方法打开所有活动的方法.

Pan*_*mar 6

我不认为这种方式是一个完美的解决方案.更好的是在需要时编写调用代码.

顺便说一下这里是你问题的解决方案

public void openActivity(Class<?> calledActivity) {
    Intent myIntent = new Intent(this, calledActivity);
    this.startActivity(myIntent);
}
Run Code Online (Sandbox Code Playgroud)

你可以称之为

openActivity(OtherActivity.class);
Run Code Online (Sandbox Code Playgroud)

  • 我自己做了类似的事情,但是对于某些类型安全我更喜欢声明类似`public <T extends Activity> void openActivity(Class <T> calledActivity){...}的方法. (2认同)