java - 在一段时间后将变量声明为常量-解决方法是什么
问题描述
情况编码如下:
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;
import com.makeIT.www.R;
public class MainScreenActivity extends AppCompatActivity {
/*final*/static Toolbar app_toolbar = null; //would like to declare constant here but,
private Toolbar return_toolbar(){
return findViewById(R.id.app_toolbar);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityscreen_main);
app_toolbar = findViewById(R.id.app_toolbar);/*findViewById isn't available till here*/
所以,我想制作 view static final
,但正如您所见findViewById
,在设置布局之前不可用。因此,我只能做到static
。(在这种情况下,不做 final 不会有什么坏处,但如果有解决方法,我还是想知道。)
编辑:我想在这里做的是让 app_toolbar 可用作静态(即没有任何实例关联),但也可用作常量,但你会看到两者都发生 app_toobar 应该在类中定义,而不是在其中一种方法中。一种方法是手动调用onCreate
(如果可能的话),但Bundle
我们也无法使用。有可能吗overloading
?onCreate
如果是,我们如何获取,Bundle
因为我们可能想保存状态
解决方案
不确定这是您所追求的,所以我将陈述以下假设:您想要的是能够将工具栏作为静态变量访问,而不管它所属的活动的状态如何。
我要做的是创建一个工厂类,其目的是创建工具栏。但是,这将需要您进行以下更改:
您可以通过调用工厂获得工具栏(如果您愿意,可以是静态的)。您可以连接工厂以返回您想要的工具栏设置。
在活动中,您删除用于构建工具栏的所有代码(这需要移至 1 中解释的工厂类),然后只需从活动中调用工厂。
然而,这种方法的缺点是:
您可能需要使用一些额外的逻辑来检查组件是否已呈现。
将无法访问对象的父级(可能不会破坏交易,但有时您可能需要访问父级容器),至少不能通过工厂本身。
编辑:我已经有很长一段时间没有使用 Java(并且很久没有接触过 Android,但是......)我的意思是这样的:
public class ToolbarFactory {
public static Toolbar getToolbar() {
// In here you build your toolbar. You could move the existing code within your application which at the moment is building the toolbar.
}
}
每当您想获得工具栏时,您都可以这样做:ToolbarFactory.getToolbar()
这将为您提供所需的工具栏。
然后,在您的活动中,我假设您有类似的东西(下面的伪代码):
Toolbar t = new Toolbar();
t.setThis(this);
s.setThat(that);
someContainer.add(t);
上面的块需要移动到工厂类并替换为以下内容:
someContainer.add(ToolbarFactory.getToolbar());
推荐阅读
- ios - 如何创建更改特定 uicollectionviewcell 属性的操作?
- hyperledger-fabric - HLF 1.4 多用户网关?
- python - 如何平均分配给一个变量的多个数组?
- docker - Windows 10 Makefile 错误 make (e=2): 系统找不到指定的文件
- c# - 实体框架类中是否有“isRequired”属性?试图获取模型的元数据属性
- html - 为什么需要设置背景大小才能使这种不断变化的线性渐变起作用
- c++ - 为什么 C++ 初始分配比 C 大得多?
- security - 使用 Tshark 提取 PCAP
- typescript - 简化打字模式的重复使用
- javascript - 单击按钮时调用 URL 的正确方法