2014-03-27 13 views
0

我试图在Scala中创建Android应用程序。我不擅长它,我没有找到好的教程。所以,我正在使用Android + Java教程,并尝试从Scala中的教程中做些事情。我有一个片段的问题。片段代码如下所示:Android应用和Scala。这个片段应该提供一个默认的构造函数

class PlaceholderFragment extends Fragment { 
    override def onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle) : View = { 
    inflater.inflate(R.layout.fragment_main, container, false)   
    } 
} 

而我得到的错误是:

- This fragment should provide a default constructor (a public constructor with no 
arguments) (com.example.myscalaandroidproject.MainActivity.PlaceholderFragment) 
- Avoid non-default constructors in fragments: use a default constructor plus 
Fragment#setArguments(Bundle) instead 

很显然,我需要做一个默认的构造函数。这可能是个蹩脚的问题,但我该怎么做才对?

+1

您列出的Scala类已经有一个默认的构造函数(因为它在类名后没有参数)。 –

+0

@IulianDragos我看到了。我该怎么处理这些错误?我可以忽略它们吗? Eclipse建议“禁用此文件中的检查”。这是解决问题的正确方法吗? – Rei

+0

@IulianDragos你知道,它可能是一些日食错误或什么的。我只是做了另一个项目,做了完全一样的,但这次它工作。你可以再写一遍,但在回答部分,我会将你的答案标记为已接受。 – Rei

回答

0
public PlaceholderFragment() 
{ 

} 

如果你想传递数据,你不能使用构造函数,因为Android可以使用默认构造函数销毁并重新创建它。您需要使用参数,这些参数在重新创建片段时保留。

public static PlaceholderFragment newInstance(int id) { 
    PlaceholderFragment myFragment = new PlaceholderFragment(); 

    Bundle args = new Bundle(); 
    args.putInt("id", id); 
    myFragment.setArguments(args); 

    return myFragment; 
} 
+0

我知道可以同时用Scala和Java编写应用程序。但我不认为我可以在Scala类中插入Java代码......或者我可以吗? – Rei

+0

我不知道Scala是什么,但似乎应该有一些从Java到Scala的翻译可能,因为你的'onCreateView'与Java版本非常相似。 –

相关问题