gpt4 book ai didi

android - android studio 1.4 中的 ActionBar

转载 作者:搜寻专家 更新时间:2023-11-01 08:40:27 26 4
gpt4 key购买 nike

我将我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com