Android中的碎片外观问题



我目前正在学习android片段编程几个小时,但是我的片段没有出现。我没有得到任何错误。调试显示fragment类的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>

有谁知道怎么回事吗?谢谢你!

Try

getSupportFragmentManager (you use SherlockActionBar)

试试

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

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

感谢大家的帮助!现在我编写了一个新项目,只有片段,没有Holoeverywhere,它工作了。

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

<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);


        }
    }
}

最新更新