我需要共享变量和对象(TextViews,Buttons等),我在我的第一个活动中创建了我的所有其他活动和类。
例如:
第1步:在我的主要活动(A类)中,我调用了一个方法(在B类中),它创建了几个按钮。
第2步:当用户点击其中一个按钮时,我会调用一个方法(在C类中),检查用户是否“做了一些事情”。
步骤3:如果用户做了某些事情,从C类我调用一个方法(在D类中),禁用我在B类中创建的所有按钮。
问题:从D类到达B类创建的按钮
的正确方法是什么我该如何处理?我必须在非活动的简单类中使用这个对象和变量,所以我不能使用Application。
答案 0 :(得分:0)
这是基于您的解释的建议。请记住,我正在用心脏打字,这可能会有一些拼写错误。
第1步:在我的主要活动(A类)中,我调用了一个方法(在B类中),它创建了几个按钮。
public class A extends Activity implements OnClickListener{
private ArrayList<Buttons> mybuttons = new ArrayList<Butons>
// ... at some point you call B
mybuttons.addAll(b.createButton(this));
// createButtons should receive an OnClickListener as parameter to set on the buttons
// createButtons returns a List<Buttons> that you add to your list.
// note that it's NOT a static list, and that the list is part of the Activity, the Activity can hold reference to its views without problem
}
第2步:当用户点击其中一个按钮时,我会调用一个方法(在C类中),检查用户是否“做了一些事情”。
步骤3:如果用户做了某些事情,从C类我调用一个方法(在D类中),禁用我在B类中创建的所有按钮。
// because A implements the OnClickListener, the OnClick is called inside A
onClick(View v){
// call the C to check. and make it return a boolean (true or false)
if(c.CheckStuff()){
// disable your buttons.
for(Button btn:mybuttons) { btn.setEnabled(false); }
}
}
问题:从D类到达B类创建的按钮
的正确方法是什么回答:你不必,公平地说,如果D只是禁用按钮只是我输入的一行。如果它正在做更多的东西,你可以将mybuttons
传递给D,但是我敦促不在D中保留它的永久引用,这是因为D不是活动生命周期的一部分。