2017-12-13 23 views
0

1] 도구 모음의 내용에 액세스 할 수 없습니다. 나는 toolbar.xml 레이아웃을 만들었고이 레이아웃을 필요한 레이아웃에 추가하려고합니다.포함 도구 모음의 내용에 액세스 할 수없고 getSupportActionBar()에 nullpointer 예외가 발생 함

toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:background="@color/colorPrimary" 
    android:minHeight="?attr/actionBarSize"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/bitcoin_logo" /> 

    <TextView 
     android:id="@+id/toolbar_txt_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="34dp" 
     android:text="gfdssfgfg" 
     android:textColor="@color/colorToolbarText" 
     android:textSize="@dimen/default_text_size" 
     android:visibility="gone" /> 

</android.support.v7.widget.Toolbar> 

mainlayout.xml 내가 도구 모음의 내용에 액세스하려고

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/side_nav_bar"> 

    <include 
     android:id="@+id/appbar" 
     layout="@layout/toolbar"></include> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/scrollView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/btn_buy" 
     android:layout_below="@+id/appbar" 
     android:fillViewport="true" 
     android:fitsSystemWindows="true"> 

     <!-- stuff--> 
    </ScrollView> 

    <android.support.v7.widget.AppCompatButton 
     android:id="@+id/btn_buy" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_weight="1" 
     android:background="#2e7826" 
     android:gravity="center" 
     android:hint="Ask" 
     android:textColor="@color/colorWhite" 
     android:textColorHint="@color/colorWhite" 
     android:textSize="@dimen/BTC_title_size" /> 
</RelativeLayout> 

다음은 나에게 오류

2] I

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 
                       at com.kiran.example.ebitcoin.activity.ActivityAsk.onCreate(ActivityAsk.java:26) 
                       at android.app.Activity.performCreate(Activity.java:6977) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064)  
                       at android.app.ActivityThread.-wrap14(ActivityThread.java)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:154)  
                       at android.app.ActivityThread.main(ActivityThread.java:6823)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)  
을 제공하다 작업 표시 줄에 뒤로 버튼을 추가하고 싶습니다.

012 3,516,
getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

는 다음과 같은 예외가 발생

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setDisplayShowHomeEnabled(boolean)' on a null object reference 
                      at com.kiran.example.ebitcoin.activity.ActivityAsk.onCreate(ActivityAsk.java:28) 
                      at android.app.Activity.performCreate(Activity.java:6977) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064)  
                      at android.app.ActivityThread.-wrap14(ActivityThread.java)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:154)  
                      at android.app.ActivityThread.main(ActivityThread.java:6823)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)  

내 된 .java 코드는

public class ActivityAsk extends AppCompatActivity { 

    Toolbar toolbar; 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     toolbar = (Toolbar)findViewById(R.id.appbar); 
     setSupportActionBar(toolbar); 
     TextView txt = (TextView) toolbar.findViewById(R.id.toolbar_txt_title); 
     txt.setText("text"); //exception 1 
     getSupportActionBar().setDisplayShowHomeEnabled(true);//exception 2 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);//exception 2 

     setContentView(R.layout.activity_ask); 
    } 
} 
+1

'된 setContentView를 시도 초기화 (이다 R.layout.activity_ask);'위의'toolbar = (Toolbar)에 있어야합니다 findVie wById (R.id.appbar);' –

+1

'setContentView' 먼저해야합니다. –

+0

또한 변경 toolbar = (툴바) findViewById (R.id.appbar); 툴바 = (툴바) findViewById (R.id.toolbar); R.id.toolbar는 툴바보기의 실제 ID입니다. – adityakamble49

답변

0

세트 라인 전에 setContentView(R.layout.activity_ask); 텍스트 뷰와 도구 모음이 코드 아래

public class ActivityAsk extends AppCompatActivity { 

    Toolbar toolbar; 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ask);//change here 
     toolbar = (Toolbar)findViewById(R.id.appbar); 
     setSupportActionBar(toolbar); 
     TextView txt = (TextView) toolbar.findViewById(R.id.toolbar_txt_title); 
     txt.setText("text"); //exception 1 
     getSupportActionBar().setDisplayShowHomeEnabled(true);//exception 2 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);//exception 2 


    } 
}