我最近一直在跟进有关Android App Development的教程,但是由于某些错误,我的代码无法构建。我已经完成了错误告诉我的操作(分号),但这导致了意外的令牌错误的发生。
这是我的代码:
package nl.yourikuilman.android.ultimatemcnews;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import static nl.yourikuilman.android.ultimatemcnews.fun.showNewsFragment;
public class MainActivity {
public void AppCompatActivity() {
override fun;
onCreate(savedInstanceState) {
super.onCreate(savedInstanceState) {
setContentView(R.layout.activity_main);
showNewsFragment();
}
}
}
}
public class fun {
public static void showNewsFragment(){
val tag="NewsListFragment";
val existingFragmentWithTag=supportFragmentManager.findFragmentByTag(tag);
if(existingFragmentWithTag==null){
supportFragmentManager.beginTransaction()
.add(R.id.newsListFragmentContainer,NewsListFragment(),tag)
.commit();
}
}
}
我已经在Android Studio中编写了它,并且还在同一项目中与Kotlin一起工作。这是我的Java代码的错误列表(为了让Android Studio投向我):
- 无法解析符号“替代”
- 无法解析方法'onCreate(?)'
- 无法解析符号“ savedInstanceState”
- 无法解析方法'onCreate(?)'
- 无法解析符号“ savedInstanceState”
- 无法解析方法'setContentView(int)'
- 无法解析符号“ val”(连续两次获得该符号)
- 无法解析符号“ supportFragmentManager”(连续两次获得该符号)
- 应该进行方法调用(这是来自Android Studio的注释,不是错误)[此点 '.add(R.id.newsListFragmentContainer,NewsListFragment(),tag)'出来, 更具体:指出“ NewsListFragment()”。
答案 0 :(得分:1)
您不应像在Java中那样在Kotlin代码中使用分号-它们是不必要的混乱。您的代码应该更像是:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
showNewsFragment()
}
fun showNewsFragment() {
val tag = "NewsListFragment"
val existingFragmentWithTag = supportFragmentManager.findFragmentByTag(tag)
if (existingFragmentWithTag == null) {
supportFragmentManager.beginTransaction()
.add(R.id.newsListFragmentContainer, NewsListFragment(), tag)
.commit()
}
}
}
顺便说一句:如果您还不熟悉Java,在您选择Kotlin之前,我会坚持使用它,直到您了解基本知识为止。从长远来看,它将为您提供帮助,尤其是在使用Android时(因为大多数库和SDK都是Java)。另外:尽管Java / Kotlin具有100%的互操作性,但它们仍需要放在单独的文件中(您的示例是将两种语言混合使用)。