2016-12-14 11 views
0

私はandroid.Iでニュースアプリがものアンドロイドの断片のツールバーにUPボタンのアイコンを表示できないのはなぜですか?

  • アンドロイド引き出し
  • 主な活動を以下している
  • ニュースアイテムフラグメント
  • ニュースItemdetails断片
  • ツールバー

を開発していますニュースアイテムの断片は、アプリケーションの最初のページです。ニュース項目を表示するlistviewが1つあります。ユーザーがリストビュー内の項目をクリックすると、2番目のページ(News Itemdetails Fragment)が開きます。 2番目のページがアクティブなときにツールバーにUPボタンのアイコンを表示して、最初のページに戻ることができます。ツールバーのUPボタンを表示するには、 'News Itemdetails Fragment'(2番目のページ)で 'setDisplayHomeAsUpEnabled'を試しましたが、 'News Item Fragment'(First Page)で項目をクリックするとエラーが発生します。

私はあなたの参照のために以下の詳細を与えました。

ニュースアイテムフラグメント

package com.uss.navigationdrawer3; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

public class HomeFragment extends Fragment { 
    // Listview Adapter 
    ArrayAdapter<String> adapter; 
    // Search EditText 
    EditText inputSearch; 

    public HomeFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view=inflater.inflate(R.layout.fragment_home, container, false); 
     String[] planets = new String[] { "News Item 1", "News Item 2", "News Item 3","News Item 4","News Item 5","News Item 6" 
     }; 
     final ListView listView=(ListView) view.findViewById(R.id.list_view_fragment_home); 

     //adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, planets); 
     adapter=new ArrayAdapter<String>(getActivity(),R.layout.list_item,R.id.product_name,planets); 
     //ArrayAdapter adapter = new ArrayAdapter(this, 
     //  R.layout.list_item, R.id.product_name, planets); 

     // Assign adapter to ListView 
     listView.setAdapter(adapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
            int position, long arg3) { 
       // TODO Auto-generated method stub 
       int itemPosition  = position; 

       // ListView Clicked item value 
       String itemValue = (String) listView.getItemAtPosition(position); 

       // Show Alert 
       Toast.makeText(getActivity(), 
         "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG) 
         .show(); 


       FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.main_container,new MessageFragment()); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 

       //getSupportActionBar().setTitle("Message Fragment"); 
      } 
     }); 
     inputSearch = (EditText) view.findViewById(R.id.inputSearch); 
     inputSearch.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
      // When user changed the Text 
      HomeFragment.this.adapter.getFilter().filter(cs); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
            int arg3) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 
     } 


    } 
     ); 


     // Inflate the layout for this fragment 
     return view; 
    } 

} 

ニュースItemdetails断片

package com.uss.navigationdrawer3; 


import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class MessageFragment extends Fragment{ 

    Toolbar toolbar; 

    public MessageFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     //return inflater.inflate(R.layout.fragment_message, container, false); 
     View view=inflater.inflate(R.layout.fragment_message, container, false); 

     toolbar=(Toolbar)view.findViewById(R.id.toolbar); 


     AppCompatActivity activity = (AppCompatActivity) getActivity(); 
     activity.setSupportActionBar(toolbar); 
     if (activity != null) { 
      ActionBar ab = activity.getSupportActionBar(); 
      if (ab != null) { 
       ab.setDisplayHomeAsUpEnabled(true); 
      } 
     } 

     toolbar.setTitle("Title"); 

     return view; 
    } 

} 

エラー

12-14 12:06:37.675 2005-2005/com.uss.navigationdrawer3 D/AndroidRuntime﹕ Shutting down VM 
    --------- beginning of crash 
12-14 12:06:37.675 2005-2005/com.uss.navigationdrawer3 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.uss.navigationdrawer3, PID: 2005 
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference 
     at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:94) 
     at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:87) 
     at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:77) 
     at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:198) 
     at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:96) 
     at com.uss.navigationdrawer3.MessageFragment.onCreateView(MessageFragment.java:36) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501) 
     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     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:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-14 12:06:37.867 2005-2017/com.uss.navigationdrawer3 I/art﹕ Background sticky concurrent mark sweep GC freed 3409(281KB) AllocSpace objects, 0(0B) LOS objects, 18% free, 1831KB/2MB, paused 77.322ms total 183.824ms 
12-14 12:11:37.853 2005-2005/com.uss.navigationdrawer3 I/Process﹕ Sending signal. PID: 2005 SIG: 9 

P1のツールバーで「上へ」ボタンを押したときに、2ページ目から最初のページに移動する方法を助けます。

答えて

0

ツールバーをアクティビティxmlに定義し、ツールバーの値を返すフラグメントにアクセスしようとしているようです

関連する問題