Android Fragment没有显示

时间:2013-04-16 09:39:50

标签: android fragment show

我目前正在学习Android片段编程几个小时,但是我的片段没有显示出来。 我没有得到任何错误。调试显示从不调用片段类的onCreateView()。

这是我的主要布局activity_main.xml:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

<LinearLayout
    android:id="@+id/FragCont"
    android:layout_width="100dp"
    android:layout_height="200dp"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@+id/textView1"
    android:orientation="vertical" >

</LinearLayout>

这是我的主要活动:

package k.myApp;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends FragmentActivity {

SherlockFragment Fragment;

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

    CentralData.getDataSource().open();
    CentralData.getDataSource().close();


    FragmentShowNotes fsn = new FragmentShowNotes();
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.FragCont, fsn);
    transaction.commit();
}
}

这是我的片段类FragmentShowNotes.java:     包k.myApp;

import org.holoeverywhere.LayoutInflater;

import android.app.Fragment;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;

import com.actionbarsherlock.app.SherlockFragment;

public class FragmentShowNotes extends Fragment{

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
        return inflater.inflate(R.layout.frag_show_notes, container, false);
}
}

最后但并非最不重要的是我的片段布局,frag_show_notes.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Dies ist das ShowNotesFragment" />

</LinearLayout>

有人知道出了什么问题吗?谢谢!

5 个答案:

答案 0 :(得分:1)

尝试

getSupportFragmentManager (you use SherlockActionBar)

答案 1 :(得分:0)

试试这个

getSupportFragmentManager().beginTransaction().add(android.R.id.content, fsn).commit();

答案 2 :(得分:0)

另一种方法是将Linearlayout替换为com.actionbarsherlock.app.SherlockFragment.FragmentShowNotes

答案 3 :(得分:0)

谢谢大家的帮助! 现在我编写了一个只有片段而没有Holoeverywhere的新项目,并且它有效。

我的项目中的错误是在片段类中: 我导入org.holoeverywhere.LayoutInflater,将其更改为android.view.LayoutInflater解决了它。 我希望这不会影响旧设备上的Holo风格,但我相信不会:)

答案 4 :(得分:0)

<RelativeLayout 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"
    tools:context="com.example.ripa.chatapplication.FriendsFragment">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/friends_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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




</RelativeLayout>

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

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="90sp"
        android:layout_height="90sp"
        android:src="@drawable/index"
        android:id="@+id/user_single_image" />

    <TextView
        android:id="@+id/user_single_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="50dp"
        android:layout_marginTop="11dp"
        android:text="Display Name"
        android:textColor="#000000"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/user_single_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/user_single_image"
        android:layout_alignEnd="@+id/user_single_name"
        android:layout_marginBottom="12dp"
        android:text="@string/user_default_status"
        android:textColor="#000000"
        android:textSize="20sp" />


</RelativeLayout>

package com.example.ripa.chatapplication;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.jar.Attributes;


/**
 * A simple {@link Fragment} subclass.
 */
public class FriendsFragment extends Fragment {
    private RecyclerView mFriendsList;
    private DatabaseReference mUsersDatabase;
    private DatabaseReference mFriendsDatabase;
    private String mCurrent_user_id;
    private FirebaseAuth mAuth;
    private View mMainView;


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


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


        mFriendsList =(RecyclerView)mMainView.findViewById(R.id.friends_list);
        mAuth =FirebaseAuth.getInstance();
        mCurrent_user_id =  mAuth.getCurrentUser().getUid();
        mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);
        mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

        mFriendsList.setHasFixedSize(true);
        mFriendsList.setLayoutManager(new LinearLayoutManager(getContext()));

        return mMainView;

    }

    @Override
    public void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<Friends, FriendsViewHolder> FriendsRecylerViewAdapter = new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(

                Friends.class,
                R.id.users_single_layout,
                FriendsViewHolder.class,
                mFriendsDatabase


        ) {
            @Override
            protected void populateViewHolder(final FriendsViewHolder friendsViewHolder, Friends friends, int i) {


                friendsViewHolder.setDate(friends.getDate());

                String list_user_id =getRef(i).getKey();
                mUsersDatabase.child(list_user_id).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        String userName = dataSnapshot.child("name").getValue().toString();
                        String userThumb =dataSnapshot.child("thumb_image").getValue().toString();

                        friendsViewHolder.setName(userName);

                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });

            }
        };
        mFriendsList.setAdapter(FriendsRecylerViewAdapter);

    }

    public static class FriendsViewHolder extends RecyclerView.ViewHolder{
         View mView;

        public FriendsViewHolder(View itemView) {
            super(itemView);
            mView = itemView;

        }

        public void setDate(String date){

            TextView userNameView =(TextView) mView.findViewById(R.id.user_single_status);
            userNameView.setText(date);



        }




        public  void setName(String name){


            TextView userNameView =(TextView) mView.findViewById(R.id.user_single_name);
            userNameView.setText(name);





        }
    }
}