不幸的是 <app> 已停止工作(溢出菜单)
Unfortunately <app> has stopped working(overflow menu)
我是初学者 android programmer.I 正在通过制作一个应用程序来学习溢出菜单的概念,该应用程序会在选择菜单中的三个项目之一时更改背景颜色。我不明白为什么我的应用程序在从选项中选择一项后关闭并显示上述错误。
这是我的 MainActivity.java 文件
package com.awani.overflowmenu;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main_menu,menu);
// return super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
RelativeLayout main_view = (RelativeLayout) findViewById(R.id.main_view);
//test which item is selected by user
switch (item.getItemId()){
case R.id.menu_red:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.RED);
return true;
case R.id.menu_green:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.GREEN);
return true;
case R.id.menu_yellow:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.YELLOW);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
在 MainActivity.java 中,在函数 onOptionsItemSelected(Menu menu)中,我在(RelativeLayout)findviewbyid(R.id.main_view)下看到红线。它说“意外转换为 RelativeLayout.but gradle搭建成功
我看过其他答案,但与我的情况不符
事件日志是这样说的:
FATAL EXCEPTION: main
Process:com.awani.overflowmenu, PID: 26829
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
at com.awani.overflowmenu.MainActivity.onOptionsItemSelected(MainActivity.java:30)
at android.app.Activity.onMenuItemSelected(Activity.java:3201)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113)
at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:679)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:969)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
at android.widget.AdapterView.performItemClick(AdapterView.java:340)
at android.widget.AbsListView.performItemClick(AbsListView.java:1530)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3698)
at android.widget.AbsListView.run(AbsListView.java:5682)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6917)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
如错误日志所示
android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
您试图将 TextView 转换为 RelativeLayout。这不可能。检查您的 layout_main.xml 并为 RelativeLayout 设置 android:id。然后使用该 ID 在您的 java 代码中获取参考。
你能提供menu/main_view.xml
文件吗?
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
这句话描述了你遇到的错误。
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView 无法转换为 android.widget.RelativeLayout
您的 R.id.main_view
不是 relativeLayout,它是 AppCompatTextView。
更改此行
RelativeLayout main_view = (RelativeLayout) findViewById(R.id.main_view);
有了这个
AppCompatTextView main_view = (AppCompatTextView) findViewById(R.id.main_view);
我是初学者 android programmer.I 正在通过制作一个应用程序来学习溢出菜单的概念,该应用程序会在选择菜单中的三个项目之一时更改背景颜色。我不明白为什么我的应用程序在从选项中选择一项后关闭并显示上述错误。
这是我的 MainActivity.java 文件
package com.awani.overflowmenu;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main_menu,menu);
// return super.onCreateOptionsMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
RelativeLayout main_view = (RelativeLayout) findViewById(R.id.main_view);
//test which item is selected by user
switch (item.getItemId()){
case R.id.menu_red:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.RED);
return true;
case R.id.menu_green:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.GREEN);
return true;
case R.id.menu_yellow:
if(item.isChecked())
item.setChecked(false);
else
item.setChecked(true);
main_view.setBackgroundColor(Color.YELLOW);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
在 MainActivity.java 中,在函数 onOptionsItemSelected(Menu menu)中,我在(RelativeLayout)findviewbyid(R.id.main_view)下看到红线。它说“意外转换为 RelativeLayout.but gradle搭建成功
我看过其他答案,但与我的情况不符
事件日志是这样说的:
FATAL EXCEPTION: main
Process:com.awani.overflowmenu, PID: 26829
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
at com.awani.overflowmenu.MainActivity.onOptionsItemSelected(MainActivity.java:30)
at android.app.Activity.onMenuItemSelected(Activity.java:3201)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113)
at android.support.v7.app.AppCompatDelegateImplV9.onMenuItemSelected(AppCompatDelegateImplV9.java:679)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:156)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:969)
at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
at android.widget.AdapterView.performItemClick(AdapterView.java:340)
at android.widget.AbsListView.performItemClick(AbsListView.java:1530)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3698)
at android.widget.AbsListView.run(AbsListView.java:5682)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6917)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
如错误日志所示
android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
您试图将 TextView 转换为 RelativeLayout。这不可能。检查您的 layout_main.xml 并为 RelativeLayout 设置 android:id。然后使用该 ID 在您的 java 代码中获取参考。
你能提供menu/main_view.xml
文件吗?
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout
这句话描述了你遇到的错误。
java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView 无法转换为 android.widget.RelativeLayout
您的 R.id.main_view
不是 relativeLayout,它是 AppCompatTextView。
更改此行
RelativeLayout main_view = (RelativeLayout) findViewById(R.id.main_view);
有了这个
AppCompatTextView main_view = (AppCompatTextView) findViewById(R.id.main_view);