【问题标题】:How to add Activity on Fragment Android如何在 Fragment Android 上添加 Activity
【发布时间】:2014-05-11 06:20:44
【问题描述】:

这是我的代码示例,我想创建一个新应用程序,我想从以前的项目中复制代码,但我收到错误。

HomeFragment.java(来自滑动菜单)

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

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

}

我结合代码

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;
}*/

我可以启动应用程序,但是当我打开fragment_home.xml 时,它没有响应

谢谢

【问题讨论】:

  • 请发布您尝试过的内容,并请更好地格式化帖子(缩进)。
  • 我认为您不会考虑将实际错误放在这里?当然不是。这将使它变得容易...

标签: android eclipse android-activity fragment


【解决方案1】:

在进行合并之前,您可能应该了解 Fragment 与 Activity 的组合方式。 (你有一个样本HomeFragment.java!)

  1. 没有setContentView 方法,因为您通过覆盖onCreateView 方法来扩展布局。
  2. 没有 findViewById 方法,而是通过在您膨胀的 View 上调用 findViewByIdonCreateView 中找到这些引用。
  3. getApplicationContext() 可以替换为 getActivity().getApplicationContext()

请在此处阅读 Fragments:http://developer.android.com/guide/components/fragments.html

【讨论】:

    【解决方案2】:

    解决了:)谢谢你

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2014-06-24
      • 2014-07-14
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多