2012-04-08 22 views
0

我有多个活动,我想在这些活动中使用相同的代码。 我完成了每个活动都有相同的一堆代码。 如何最小化这个冗余代码。 这样做的,我不希望创建对象,并使用它的方法去除冗余...如何最小化Android中的重复代码而不创建对象

plz帮助... 感谢ü....

+0

为什么你不想使用另一个对象来减少冗余? – 2012-04-08 05:56:54

+0

@JacobPhillips:因为我已阅读,创建对象可能会在资源,性能等方面的成本,它不建议在移动应用程序...嘿,让我知道,如果我错了...我新的Android ... – 2012-04-08 06:04:00

+0

我认为你应该有共同的(“冗余”)方法,并将它们包含在一个新类中,以便其他活动继承。你确实想知道内存的使用情况,但是创建一个相当简单的对象在这个(和大多数)情况下是完全可以接受的 – 2012-04-08 06:07:56

回答

5

解决方法很简单:扩展类的活动,并为他添加所有你想要的方法。 (我通常称之为例如该类BaseActivity)
然后,当你正在开发新的活动 - 而不是扩展类活动 - 扩展BaseActivity您所做的类,它包含您添加的方法..

public class BaseActivity extends Activity 
{ 
protected int mSomeValue; 

protected void someMethod1() 
{ 

} 

protected void someMethod2() 
{ 

} 

protected void someMethod3() 
{ 

} 

} 

class SomeActivity extends BaseActivity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    someMethod1(); 
} 
} 

class SomeActivity2 extends BaseActivity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    someMethod1(); 
} 
} 
+0

嘿thankx的解释...它帮助我... – 2012-04-08 06:40:43

+0

你欢迎,总是乐意帮助 – 2012-04-08 06:46:26

+0

但你为什么不标记我的问题解决? – 2012-04-08 08:08:51

5

您可以创建一个“BaseActivity”并在该类中包含大量代码,然后创建类并扩展该“BaseActivity”。

以下是我认为你正在寻找:

public class BaseActivity extends Activity { 

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 

    case R.id.donate: 
     //something 
     break; 

    case R.id.about_menuitem: 
     //something 
     break; 

    case R.id.exit: 
     finish(); 
     break;   

    default: 
     return true; 
    } 
    return true; 
} 
} 

我创建了一个名为“BaseActivity”类,在这个类中,我有我的Android选项菜单,我也延长“活动”。由于我扩展了“活动”并在此课程中添加了我的选项菜单,因此我现在可以为我的其他课程使用相同的菜单代码。

我只是简单地创建我的新类,并将其与“BaseActivity”扩展:

public class SomeOtherActivity extends BaseActivity { 
//new code here 
} 

现在所谓的“SomeOtherActivity”之类,会继承我的菜单代码,同时也“活动”。

请试试看,让我知道这是否有帮助!