2016-01-21 44 views
0

我有几个具有类似行为的活动我创建了一个基类活动类,以充当每个类的父类,其中可以实现常用的元素和方法。使用抽象类和Android活动

public abstract class ParentActivity extends AppCompatActivity{ 
    public Class<AppCompatActivity> actRoot; 

    void btnCancel(View v){ 
     Intent i = new Intent(this, actRoot); 
     i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(i); 
     finish(); 
    } 
} 

我接下来要定义一个子类,如下所示

public void ChildActivity extends ParentActivity{ 
    @Overide 
    public void onCreate(Bundle savedInstance){ 
     actRoot = MainActivity.class; 
    } 
} 

法根可以是AppCompatActivity任何子女或孙子女。

如何在此上下文中定义要动态使用的类引用作为AppCompatActivity的相对值?

+1

为什么你需要有一个类参考你所有的子类活动? – TheSunny

回答

1

你的方法可能是不可取的,但如果你想尝试它,你会使用它代替:

public Class<? extends AppCompatActivity> actRoot; 

再后来:

actRoot = MainActivity.class; 
+0

您能否提供具体或特定的原因列表,为什么这种方法不可取,以便我可以重构问题? 你的代码确实有效,所以如果原始问题是有效的,你有答案。 – earnshae

+0

这取决于'actRoot'的目的是什么,在你的例子中很难说。我说这可能不是可取的,因为在你的例子中,当点击取消按钮时,你正在使用'actRoot'开始一个活动。在这种情况下,典型的做法是完成当前的活动,并让后面的堆栈中的前一个活动返回,如果有人回来,就好像用户按下后退按钮一样。 –

+0

谢谢,我认为这可能会回答我的另一个问题。我会考虑一分钟,然后更新代码以在问题中反映这一点。 – earnshae

0

我不认为这样做是个好主意。如果你有太多的类,你不能静态地定义它们中的每一个,那很可能是你错过了其他一些方法来分解你的代码。

无论如何我会回答:你可以使用delegation pattern,这个链接的维基百科文章会比我更好地解释。