2016-04-26 24 views
0

こんにちは、私は2つのナビゲーションドロワーを作成し、私のアプリで2つの主要なactivtiesのように(記録されたユーザーのための1とログインしていないユーザーのための1)。ユーザーのログイン時にニュースを見たい場合は、それが素晴らしい作品です。新しいフラグメントを開きます。ここで、ニュースのリストが表示されます。ユーザーが特定のニュースを選択すると、詳細が開き、すばらしいことができます。しかし、問題は、ログに記録されていないユーザーのための活動でニュースの詳細を開くときです。私はそれがここにある問題を分離することができます。フラグメントの表示が1で見つかりませんでした。Nav Drawer

public void onItemClick(AdapterView<?> parent, View view, int  position, long id) { 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    Fragment fragment = new DetailView(); 
    Integer ID; 
    ID = listNovosti.get(position).getId(); 
    Bundle bundle = new Bundle(); 
    bundle.putInt("ID", ID); 
    fragment.setArguments(bundle); 
    ft.replace(R.id.fragmentlayout, fragment); 
    ft.commit(); 
} 

問題は、この行にある:私がログインしているユーザ(fragmentprelayout)とfragmentlayout秒であるため2つのfragsレイアウト1を使用してい

ft.replace(R.id.fragmentlayout, fragment); 

どのように調整したり、その2つのレイアウトの中から1つを選ぶことができるように、その場所の周りに魔法をかけることができますか?

+1

あなたが正しく理解しているなら、 'int layoutId = findViewById(R.id.fragmentlayout)== null? R.id.fragmentprelayout:R.id.fragmentlayout; '。しかし、一度に1つしかロードされないのであれば、両方のレイアウトで同じIDを使用しない理由はわかりません。 –

+0

両方のフラッグに同じレイアウトを使用したいと思っていますが、このエラーが発生しました: java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {ba.lampica.dev/lampica.ba.lampica.views.activities .MainPreLogin}:java.lang.IllegalArgumentException:断片化のためのID 0x7f0d00b7(ba.lampica.dev:id/fragmentlayout)のビューが見つかりませんLoginFragment {26f5ec3e#0 id = 0x7f0d00b7} 再度id:/ –

+0

私はあなたのセットアップでは本当に明確ではないので、上記がうまくいかない場合は、レイアウトのような詳細とアクティビティの関連コードを提供する必要があります。 –

答えて

0

良い方法は、あなたが別の断片を作成し、両方の活動からも同様にそれらを起動することができますが、それでも同じフラグメントここ

を使用したい場合は、

まずあなたがチェックする必要があることを実現することができる方法であるでしょうその活動は、だから、フラグメントにあなたは私達が変更されます

public static Boolean running = false; 

class LoginActivity extends Activity { 

    @Override 
    public void onStart() { 
    super.onStart(); 
    Fragment.running = true; 
    } 
} 

のような変数が必要ブール

を使用することによって実行されていますLoginActivityはその後、他のiflate.LayoutforLoginActivity.xml DetailViewFragmentのOnCreateViewでそうiflate.layoutforNonLoginActivty.xml

を実行している場合、我々はこの本

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView; 

    if(running) { 

     rootView = inflater.inflate(R.layout.LayoutforLoginActivity, container, false); 
    }else { 
     rootView = inflater.inflate(R.layout.LayoutforNonLoginActivity, container, false); 

    } 

のようにそれを行うだろうです発足 上のフラグメントのレイアウトは、ちょうどハックです

この場合、両方のXMLはすべてのビューで同じIDを持たなければなりません。そうでない場合はNullPointerException

関連する問題