user1956123
user1956123

Reputation: 45

Fragment appearance issue in Android

I'm currently learning android fragment programming for a few hours, however my fragments don't show up. I don't get any error. Debugging shows that the onCreateView() of the fragment class is never called.

This is my main layout 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>

This is my Main Activity:

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

This is my fragment class, FragmentShowNotes.java: package 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);
}
}

And last but not least my fragment layout, 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>

Does anybody know what's going wrong? Thank you!

Upvotes: 0

Views: 660

Answers (5)

Ripa
Ripa

Reputation: 1

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





        }
    }
}

Upvotes: 0

user1956123
user1956123

Reputation: 45

Thank you all for your help! Now I programmed a new project with just fragments and without Holoeverywhere and it worked.

The error in my project was in the fragment class: I imported org.holoeverywhere.LayoutInflater, changing it to android.view.LayoutInflater solved it. I hope this won't affect the Holo style on older devices, but I believe not :)

Upvotes: 0

HeyNine
HeyNine

Reputation: 21

another way is to replace you Linearlayout to com.actionbarsherlock.app.SherlockFragment.FragmentShowNotes

Upvotes: 0

RajaReddy PolamReddy
RajaReddy PolamReddy

Reputation: 22493

try like this

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

Upvotes: 0

Pauland
Pauland

Reputation: 2014

Try

getSupportFragmentManager (you use SherlockActionBar)

Upvotes: 1

Related Questions