添加底部导航活动并尝试从另一个活动调用它后,在编译时出现错误:
{project directory}\ui\dashboard\DashboardFragment.java:13: error: illegal character: '`'
import `in`.ac.somedomain.someappname.R;
导致错误的 DashboardFragment.java 中的代码是导入行:
import `in`.ac.somedomain.someappname.R;
我只添加了一个新的底部导航活动,并尝试使用以下方法调用它:
Intent homeIntent = new Intent(getApplicationContext, HomeActivity.class);
startActivity(homeIntent);
在手动删除“`”时(在 3 个活动中:DashboardFragment、HomeFragment、NotificationsFragment),调用活动时发生以下错误(logcat,应用程序崩溃):
2020-05-24 16:29:02.711 14323-14323/in.ac.somedomain.someappname E/AndroidRuntime: FATAL EXCEPTION: main
Process: in.ac.somedomain.someappname, PID: 14323
java.lang.RuntimeException: Unable to start activity ComponentInfo{in.ac.somedomain.someappname/in.ac.somedomain.someappname.BaseActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2943)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3078)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6854)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference
at androidx.navigation.ui.ActionBarOnDestinationChangedListener.setTitle(ActionBarOnDestinationChangedListener.java:48)
at androidx.navigation.ui.AbstractAppBarOnDestinationChangedListener.onDestinationChanged(AbstractAppBarOnDestinationChangedListener.java:100)
at androidx.navigation.NavController.addOnDestinationChangedListener(NavController.java:218)
at androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(NavigationUI.java:220)
at in.ac.somedomain.someappname.BaseActivity.onCreate(BaseActivity.java:26)
at android.app.Activity.performCreate(Activity.java:7151)
at android.app.Activity.performCreate(Activity.java:7142)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2923)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3078)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6854)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)
将鼠标悬停在代码中的“`in`”上时出现错误Raw string literals are not supported at language level '7'
,我尝试了它的一些建议(将源兼容性切换为 1.8,这与级别 8 相同),禁用了一些没有改变任何东西的东西,并且现在它只是告诉我去模块设置,但我怀疑原始字符串是问题所在。
我该怎么做才能使我的底部导航活动正常工作?
编辑:活动代码(底部导航活动,称为 Main2Activity):
package in.ac.somedomain.somename;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
BottomNavigationView navView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
//the below line was causing the problem
// NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
}
}
首先,替换导入代码:
import `in`.ac.somedomain.someappname.R;
在:
import ac.somedomain.someappname.R;
然后错误表明您有一个指向操作栏 = null 的链接。这个答案可能对你有帮助:答案
如果这没有帮助,请显示您的 Java 代码和清单。
还值得一提的是,操作栏和底栏是不同的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句