Dony Aditya
Dony Aditya

Reputation: 43

How to add Activity on Fragment Android

This is a sample of my code, I want make a new application, and I want copy code from my previous project, but I get an error.

HomeFragment.java (from Sliding Menu)

package com.example.sia;

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

public class HomeFragment extends Fragment {

public HomeFragment(){}

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

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    return rootView;
}
}

Account.java

package com.example.sia2;

import java.util.HashMap;

import org.json.JSONArray;
import android.os.Bundle;
import android.app.Activity;
import android.text.Html;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class Account extends Activity {

Button logout;
SessionManager session;
TextView status;
JSONArray contacts = null;
String nim, name;

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

    session = new SessionManager(getApplicationContext());
    Toast.makeText(getApplicationContext(),
            "User Login Status: " + session.isLoggedIn(), Toast.LENGTH_LONG)
            .show();

    session.checkLogin();

    HashMap<String, String> user = session.getUserDetails();

    name = user.get(SessionManager.KEY_NAME);
    // id = user.get(SessionManager.KEY_ID);

    TextView status = (TextView) findViewById(R.id.status);
    status.setText(Html.fromHtml("Welcome,<b>" + name + "</b>  "));

    logout = (Button) findViewById(R.id.logout);

    logout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            session.logoutUser();
            finish();
        }
    });
}

}

I combine the code

package com.example.sia;

import java.util.HashMap;

import org.json.JSONArray;

import com.example.sia.R;
import com.example.sia.SessionManager;

import android.app.Fragment;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class HomeFragment extends Fragment {

Button logout;
SessionManager session;
TextView status;
JSONArray contacts = null;
String nim, name;

public HomeFragment(){}

@Override
/**public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_account);**/

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_home, container, false);



    session = new SessionManager(getActivity().getApplicationContext());
    Toast.makeText(getActivity().getApplicationContext(),"User Login Status: " + session.isLoggedIn(), Toast.LENGTH_LONG).show();

    session.checkLogin();

    HashMap<String, String> user = session.getUserDetails();

    name = user.get(SessionManager.KEY_NAME);
    // id = user.get(SessionManager.KEY_ID);

    TextView status = (TextView) getView().findViewById(R.id.status);
    status.setText(Html.fromHtml("Welcome,<b>" + name + "</b>  "));

    logout = (Button) getView().findViewById(R.id.logout);

    logout.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View arg0) 
        {
            // TODO Auto-generated method stub
            session.logoutUser();
            getActivity().finish();
        }

    });
    return rootView;  
}  


}    
/*public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);

    return rootView;
}*/

I can launch the application, but when I open fragment_home.xml, it is not responding

Thank you

Upvotes: 0

Views: 10400

Answers (2)

Dony Aditya
Dony Aditya

Reputation: 43

solved :) Thank U

public class HomeFragment extends Fragment {
....
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
.....
.....
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    return rootView;
}
}

Upvotes: 0

JRomero
JRomero

Reputation: 4868

Before you go merging you should probably know how a Fragment is composed versus an activity. (You have a sample HomeFragment.java!)

  1. There is no setContentView method because you inflate your layout by overriding the onCreateView method.
  2. There is no findViewById method, instead you find those references within onCreateView by calling findViewById on the View you inflated.
  3. getApplicationContext() can be replaced by getActivity().getApplicationContext()

Please read up on Fragments here: http://developer.android.com/guide/components/fragments.html

Upvotes: 0

Related Questions