2016-11-05 3 views
1

Новое на Android, и я пытаюсь создать приложение, которое отображает список имен, а затем справа заголовок темы справа от него, а затем третий фрагмент, который отображает сведения о это тема заголовка. Я бы хотел, чтобы все три фрагмента были посвящены моей основной деятельности. Поэтому я хочу, чтобы выглядеть следующим образом:Три фрагмента в одном активном действии

Paint description

До сих пор это главный XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    tools:context=".MainActivity"> 

    <LinearLayout 
     android:id="@+id/companyListFrag_LL" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <fragment 
     class= "name.financialnews.CompaniesListFragment" 
     android:id="@+id/list_companies" 
     android:layout_width="10dp" 
     android:layout_weight="20" 
     android:layout_height="wrap_content" /> 

    <FrameLayout 
     android:id="@+id/list_headings" 
     android:layout_width="20dp" 
     android:layout_weight="80" 
     android:layout_marginLeft="20dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" /> 

    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/detail_fragment" 
     android:layout_width="0dp" 
     android:layout_below="@id/list_headings" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" /> 

    </RelativeLayout> 

Когда я запускаю это, Im в состоянии нажать на имя, чтобы получить тему заголовок на справа, и когда я нажимаю заголовок темы, ничего не отображается для фрагмента детали. Может ли кто-нибудь помочь мне выяснить, что я делаю неправильно?

Спасибо

здесь это подробно фрагмент XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 

<!-- TODO: Update blank fragment layout --> 
<TextView 
    android:layout_marginTop="30dp" 
    android:id="@+id/textHeading" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

/> 


<TextView 
    android:id="@+id/textDescription" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" /> 

</FrameLayout> 

добавил основной деятельности Java:

import android.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.app.Fragment; 

public class MainActivity extends AppCompatActivity 
    implements CompaniesListFragment.OnCompaniesSelectedListener, 
    HeadingsListFragment.OnHeadingsSelectedListener 

{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 


public void onCompanySelected(long id){ 


    HeadingsListFragment headingsList = new HeadingsListFragment(); 

    FragmentTransaction transaction= 
getFragmentManager().beginTransaction(); 
    headingsList.updateCompanyId(id); 

    transaction.replace(R.id.list_headings,headingsList); 

    transaction.addToBackStack(null); 

    transaction.setTransition(FragmentTransaction.TRANSIT_NONE); 

    transaction.commit(); 


} 


@Override 
public void onHeadingSelected(long id) { 


    Detail_Fragment items = new Detail_Fragment(); 
    FragmentTransaction transaction=    
getFragmentManager().beginTransaction(); 
    items.updateHeadingId(id); 


    transaction.replace(R.id.detail_fragment, items); 

    transaction.addToBackStack(null); 

    transaction.setTransition(FragmentTransaction.TRANSIT_NONE); 

    transaction.commit(); 

} 
} 

ответ

0

Изменение корневой элемент из RelativeLayout к LinearLayout и изменить ориентацию от вертикали. Я также добавил бы вес на внутреннем LinearLayout, чтобы оба прямых дочерних элемента корневого элемента имели равные веса. Пространство, которое вы предоставляете списку компаний и заголовкам, также очень мало (20dp не очень большой).

Когда я вставляю код в Android Studio, есть предупреждения, в которых указывается несколько проблем с макетом, которые указали бы вас в правильном направлении. В целом, я рекомендую начинать простой и добавлять один фрагмент за раз. Одна вещь, которая может помочь, - включить параметр «показать границы макета» в настройках разработчика, если у вас возникли проблемы с макетами представлений.

+1

благодарит за ответ. Я изменил то, что вы просили, и он все еще не показывает мне третий фрагмент внизу. Все остальное проявляется хорошо. – len

+0

Я не могу помочь вам с этим фрагментом, потому что он не находится в макете xml. Я предполагаю, что вы добавляете фрагмент детали в макет фрейма в Java-коде. –

+0

Я добавлю другой фрагмент на главный пост – len

Смежные вопросы