- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我将我的 Android Studio 更新为 1.4 版,但在 Activity 中实现 ActionBar 时遇到了问题。应用程序通过 MainActivity
执行用户数据验证,然后将用户定向到第二个 Activity (WelcomeActivity
)。我正在尝试通过代码 getActionBar().setDisplayHomeAsUpEnabled(true);
创建一个“向上导航
”,但是当我运行该应用程序时,它会关闭从一项 Activity 转移到另一项 Activity 。如果我从上面提到的操作栏中删除信息,应用程序将正常运行。
MainActivity.java
package br.com.luizugliano.actionbar;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
public void onClickBtBuscar(View view){
EditText etNome = (EditText) findViewById(R.id.etNome);
EditText etCPF = (EditText) findViewById(R.id.etCPF);
String nome = etNome.getText().toString();
String cpf = etCPF.getText().toString();
if("luiz".equals(nome) && "123456789".equals(cpf)){
Intent intent = new Intent(getContext(),WelcomeActivity.class);
Bundle params = new Bundle();
params.putString("nome", "Luiz");
intent.putExtras(params);
startActivity(intent);
}else{
alert("Usuário não encontrado, faça seu cadastro");
}
}
private Context getContext(){
return this;
}
private void alert(String s){
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
}
WelcomeActivity.java
package br.com.luizugliano.actionbar;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.widget.TextView;
public class WelcomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Bundle args = getIntent().getExtras();
String nome = args.getString("nome");
//Atualizando o texto do TextView com uma mensagem de boas vindas
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(nome + ", seja bem-vindo.");
//Adiciona o botão de navegação da action bar
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == android.R.id.home) {
//O método finish encerrará essa activity
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.luizugliano.actionbar" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".WelcomeActivity"
android:label="@string/title_activity_welcome"
android:theme="@style/AppTheme.NoActionBar"
android:parentActivityName=".MainActivity">
</activity>
</application>
content_welcome.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_welcome"
tools:context="br.com.luizugliano.activity.WelcomeActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView" />
activity_welcome.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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:fitsSystemWindows="true"
tools:context="br.com.luizugliano.actionbar.WelcomeActivity">
<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_welcome" />
<!--<android.support.design.widget.FloatingActionButton android:id="@+id/fab"-->
<!--android:layout_width="wrap_content" android:layout_height="wrap_content"-->
<!--android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"-->
<!--android:src="@android:drawable/ic_dialog_email" />-->
</android.support.design.widget.CoordinatorLayout>
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
logcat 崩溃日志
10-15 00:25:42.457 4456-4456/br.com.luizugliano.actionbar W/System: ClassLoader referenced unknown path: /data/app/br.com.luizugliano.actionbar-2/lib/x86 10-15 00:25:42.680 4456-4472/br.com.luizugliano.actionbar D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 10-15 00:25:42.683 4456-4456/br.com.luizugliano.actionbar D/: HostConnection::get() New Host Connection established 0xad70ddb0, tid 4456 10-15 00:25:42.735 4456-4472/br.com.luizugliano.actionbar D/: HostConnection::get() New Host Connection established 0xad70dfb0, tid 4472 10-15 00:25:42.757 4456-4472/br.com.luizugliano.actionbar I/OpenGLRenderer: Initialized EGL, version 1.4 10-15 00:25:42.854 4456-4472/br.com.luizugliano.actionbar W/EGL_emulation: eglSurfaceAttrib not implemented 10-15 00:25:42.854 4456-4472/br.com.luizugliano.actionbar W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xabfa99e0, error=EGL_SUCCESS 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar D/AndroidRuntime: Shutting down VM 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: FATAL EXCEPTION: main 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: Process: br.com.luizugliano.actionbar, PID: 4456 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.luizugliano.actionbar/br.com.luizugliano.actionbar.WelcomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at br.com.luizugliano.actionbar.WelcomeActivity.onCreate(WelcomeActivity.java:25) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:6237) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.-wrap11(ActivityThread.java) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 10-15 00:26:02.266 4456-4456/br.com.luizugliano.actionbar E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
最佳答案
我看得不够深入,但乍一看,你似乎在做:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
然后你做
//Adiciona o botão de navegação da action bar
getActionBar().setDisplayHomeAsUpEnabled(true);
(与使用您的工具栏相反)。
但是,最重要的是,您还拥有这两个 Activity
android:theme="@style/AppTheme.NoActionBar"
但是您还没有为您的自定义工具栏提供布局。 (或者你还没有展示)
您至少需要在工具栏中包含一个小部件: <android.support.v7.widget.Toolbar…
你称它为toolbar
所以确保它有 android:id="@+id/toolbar"
否则,当 Activity 试图取消引用不存在的工具栏时,您的崩溃很可能是 Activity 的 onCreate 方法中的空指针异常。
关于android - android studio 1.4 中的 ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137697/
我经常使用 SSMS 查询数据和构建数据集,我的 IT 部门负责数据库管理。 最近我发现了 Azure Data Studio,我喜欢: 智能感知 源代码控制(例如使用 Git) 来自社区的扩展 SQ
我想根据我使用的 visual studio 版本编译不同的东西,比如 #if VISUAL_STUDIO_VERSION > 2015 eventH?.Invoke(this, EventArgs.
我们的开发团队计划从 visual studio 2005 升级到 visual studio 2010 -- 跳过 visual studio 2008。 大部分项目是VB ASP.NET项目,使用
我的Visual Studio 2015无法构建2010平台工具集。它说: The build tools for Visual Studio 2010 (v100) cannot be found.
我目前正在使用 Visual Studio 2015 来编程 ASP.NET Core 应用程序。我对安装 Visual Studio 2017 有以下疑问: 什么被认为是最佳实践和/或最干净的方法?
尝试从扩展和更新获取 Visual Studio 扩展时,出现以下错误:- 向 visualstudiogallery.msdn.microsoft.com/Services/VStudio/Exte
这个问题在这里已经有了答案: Can Visual Studio Code and VS 2012 be installed on same computer? (1 个回答) 关闭去年。 在安装了
作为标准安装的一部分,Visual Studio Code 带有一个名为“Monokai Dimmed”的颜色主题。 有没有办法将它移植到 Visual Studio 2015?我检查了社区主题( h
我想开始编程 CUDA。 我已经安装了 Visual Studio 2010 Express。 我还安装了 nVidia nSight Visual Studio。 而且我具备所有常见的先决条件(Ne
Visual Studio Community Edition是否可以使用Visual Studio Online帐户上的存储库? 我一直为包含在Online帐户中的Visual Studio Onl
我有一个我一直在开发的应用程序,但在 android studio 上遇到了问题。当我点击“build->run”然后选择我的设备时,应用程序永远不会在我的手机上运行(并且自动出现的android-s
我正在使用Visual Studio2010。我面临的一个问题是,当我创建一个新的Web项目时,Visual Studio将创建该项目,并且不会在解决方案资源管理器中显示其解决方案。 另一件事是,我想
我通读了这里的许多帖子,却找不到一个有效的明确答案。因此,在花了一些时间使它生效之后,我认为应该发布它。 问题:发布配置文件将建立在服务器上,但不会发布。 解: 确保已安装Microsoft Wind
我正在尝试使用Visual Studio 2012构建针对.NET 3.5的C++ CLI应用程序。 通过安装Visual Studio 2008,并指定v90平台工具集,我已经在一台机器上进行了这项
我在 Microsoft Visual Studios 2013 中有一个项目,我想在 Microsoft Visual Studios 2010 中打开它。有什么简单的方法吗?还是我必须在2010年
我想知道,如果我发送一个解决方案文件夹(它是用 visual studio C# 编写的),您可以在 visual studio for mac 中打开解决方案吗? 在visual studio 20
有没有办法在 Visual Studio Code 和 Visual Studio 中设置相同的快捷方式(而不必每次都手动更改它们)? 例如,我在 Visual Studio Code 中经常使用 A
我刚开始了解 Visual Studio Code。我想知道,我可以将 Visual Studio 替换为所有 .NET 开发相关的工作吗? 我可以节省 Visual Studio 许可的成本吗? V
我安装了具有有效许可证(Visual Studio 订阅)的 Visual Studio 2019 企业版(VS 2019 16.1.4),它运行良好。 突然之间,当我尝试打开项目或项目中的任何文件时
我一直在使用 Compass 编译 Windows 环境中的 sass 文件,无论是在命令行上还是使用 Compass-app 来查看目录。 我刚刚开始使用 Visual Studio(专业版 201
我是一名优秀的程序员,十分优秀!