android - Android - 将菜单项膨胀到操作栏中时出错
问题描述
我有以下问题,我只需要将一项(注销)充气ActionBar
到LoginActivity
. 但它会抛出一个"unexpected EOF!"
. 所以我尝试了不同的方法来膨胀项目以在操作栏中显示它,但仍然没有好的结果,最后我把错误信息放在了最后。
这是示例的图像(显示的内容) 没有显示项目..
我的代码如下:
应用程序/java/包/MainActivity。
public class MainActivity extends AppCompatActivity {
CircleImageView profile_image;
TextView username;
FirebaseUser firebaseUser;
DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar();
profile_image = findViewById(R.id.profile_image);
username = (TextView) findViewById(R.id.userId);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User2 user = dataSnapshot.getValue(User2.class);
System.out.println(user);
Log.d("Userz",user.getUsername());
username.setText(user.getUsername().toString());
if(user.getImageURL().equals("default")){
profile_image.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(MainActivity.this).load(user.getImageURL()).into(profile_image);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
//getMenuInflater().inflate(R.menu.menu,menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
Log.d("Itemid",item.toString());
switch(item.getItemId()){
case R.id.logoutItem:
FirebaseAuth.getInstance().signOut();
startActivity(new Intent(MainActivity.this, StartActivity.class));
finish();
return true;
}
return false;
}
}
应用程序/res/menu/menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/logoutItem"
android:title="Logout"
app:showAsAction="always"
/>
</menu>
应用程序/res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/MenuStyle">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/profile_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/userId"
android:text="username"
android:textColor="#fff"
android:layout_marginLeft="25dp"
android:layout_marginStart="25dp"
android:textStyle="bold"/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
</LinearLayout>
错误信息:
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:631)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:403)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
at com.affinity.affinityteam.firebase_chat_try2.MainActivity.onCreateView(MainActivity.java:40)
at android.app.Activity.onCreateView(Activity.java:6184)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:389)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:631)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:403)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
at com.affinity.affinityteam.firebase_chat_try2.MainActivity.onCreateView(MainActivity.java:40)
at android.app.Activity.onCreateView(Activity.java:6184)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:389)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:631)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:403)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
at com.affinity.affinityteam.firebase_chat_try2.MainActivity.onCreateView(MainActivity.java:40)
at android.app.Activity.onCreateView(Activity.java:6184)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:389)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:631)
at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
at android.support.v7.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:403)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:191)
at com.affinity.affinityteam.firebase_chat_try2.MainActivity.onCreateView(MainActivity.java:40)
at android.app.Activity.onCreateView(Activity.java:6184)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:389)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
read: unexpected EOF!
解决方案
我认为错误的意外 EOF与您的代码无关,而是与可能具有固定大小的缓冲区大小有关的一些配置。要解决此问题,您可以在开发人员选项设置下将缓冲区大小设置为关闭。
如果尚未启用,您可以启用关于下的设置,然后单击内部版本号,直到看到确认已启用开发人员选项的吐司。
编辑:在您的工具栏 XML 节点内,添加带有回调toolbar
中调用的值的 id 属性onCreate
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
//not sure that toolbar is not null since in xml there is no id toolbar
setSupportActionBar(toolbar);
getSupportActionBar();
由于toolbar
找不到带有 as id 的视图,因此 findViewById 返回 null 并且 setSupportActionBar 将获得一个 null 值,这意味着没有 Toolbar 可以转换为 ActionBar。
修改您的工具栏 XML 并添加 id 属性,如下所述:
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:id="@+id/toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/MenuStyle">
祝你好运
推荐阅读
- javascript - Node.js 如何通过 JSON 循环获取值
- docker - 如何在 Docker 映像的构建过程中创建 Docker 参数
- php - 使用 PHP cURL 向 MapQuest 发送 GET 请求
- python - 如何使用函数装饰器检查函数类型?
- winforms - CefSharp winforms 解决方案可能存在焦点问题
- excel - 输入以“-”分隔的数字和字母的公式
- reporting-services - SSRS Excel 输出 - 仅在表格最右侧隐藏单元格
- java - 在 Java 中的 ldapContext 中搜索所有子域
- r - 如何融化数据框中的列表列
- go - 解析文件中的数据时地图大小不同的地图