0

我有一个设置屏幕,您可以在其中选择,添加和删除应用程序的配置。创建其他类的对象

当添加一个配置时,我创建了一个inputBox类的新实例(扩展设置活动类 - 我存储标准android文本输入框的过程)以查询新配置的名称。

在此输入框的Onclick中,将调用superClass(设置活动)中的过程以创建新的配置对象。 此过程从活动(例如选定的微调元素)查询一些事情,包括seekBar的进度。

这是我得到一个NPE:

java.lang.NullPointerException: Attempt to invoke virtual method'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 

同一个对象的创建过程也被称为上的应用程序的初始化和工作得很好。

我从Error了解到,问题是当从子类调用过程时,变量的引用不再被设置 - 因此不能被查询。

所以问题:
如何从另一个类调用过程时查询活动元素的值?

我知道这个话题相当广泛,但我现在无法弄清楚现在几天
感谢您的帮助提前。

这是问题的一个方案:

public class Settings extends AppCompatActivity{ 
Context settingsContext = this; 
private Spinner someSpinner; 
//other elements 
@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
    someSpinner = (Spinner) findViewById(R.id.someView); 
    //other elements 
    addNewConfig.setOnClickListener((v) --> { 
     inputBox inputBox = new inputBox("OK", "Cancel", settingsContext, "sourcePath",1,1); 
     newConfigName = inputBox.show(); 
    }); 

public sSetting makeNewConfig(String name, String sourcePath, int dataFrom, int dataTo){ 
    sSetting newConfig; 
    newConfig = new sSetting("NAME", someSpinner.getProgress()>0, ...); 
    return newConfig; 
} 
} 

而且输入框:

public final class inputBox extends Settings { 
//someVars 
inputBox(String buttonOk, String buttonCancel, Context setContext, String sourcePath, int dataFrom, int dataTo){ 
    //variable setters 
} 
private String show() { 
     //show msgbox 
     //onclick ok 
     super.makeNewConfig(....); 
} 
+0

的构成要素也只包含数据,但我必须从设置屏幕上查询数据(例如关闭/打开音乐seekbar:我在配置对象中保存true或false) –

+0

'Settings扩展AppCompatActivity','inputBox extends Settings','new inputBox( ...)** ......你不应该这样做** ......阅读一些官方指南,尝试了解如何使用Activity和其他Android组件...... – Selvin

+0

什么是活动的状态这是阿尔lowed? –

回答

0

为了解决我改组我的项目有点问题:
我删除了输入框,部分,在经过一些研究考虑为我所需要的过于复杂的解决方案之后。
但是:我现在在我的设置视图中添加了一个editText。 虽然我不得不为此更改我的设置视图,但它现在看起来更好,并且编辑用户的配置名称非常容易。

我认为在大多数情况下,这将做的伎俩。添加弹出盒只是需要更多的错误处理,使设计更加复杂

我希望这有助于;) 如果你需要它的代码就可以在这里找到: GitHub - AIM