我有这个 Activity
package com.padilla.jorge.proyecto_aplicaciones_moviles;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.ArrayList;
import java.util.Calendar;
public class VerPerfil extends AppCompatActivity {
private String[] arraySpinner;
Intent i;
TextView Nombre_TextView;
TextView Email_TextView;
TextView Password_TextView;
TextView Puntos_TextView;
TextView getNombre;
TextView getEmail;
TextView getPassword;
TextView getPuntos;
ArrayList<TextView> textViewsVal;
ArrayList<TextView> textViewsName;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference;
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ver_perfil);
Nombre_TextView=(TextView)findViewById(R.id.Nombre_textView);
Email_TextView=(TextView)findViewById(R.id.Email_TextView);
Password_TextView=(TextView)findViewById(R.id.Password_TextView);
Puntos_TextView=(TextView)findViewById(R.id.Puntos_TextView);
getNombre=(TextView)findViewById(R.id.Nombre_valor);
getEmail=(TextView)findViewById(R.id.Email_valor);
getPassword=(TextView)findViewById(R.id.Password_valor);
getPuntos=(TextView)findViewById(R.id.Puntos_valor);
textViewsName = new ArrayList<TextView>();
textViewsName.add(Nombre_TextView);
textViewsName.add(Email_TextView);
textViewsName.add(Password_TextView);
textViewsName.add(Puntos_TextView);
textViewsVal = new ArrayList<TextView>();
textViewsVal.add(getNombre);
textViewsVal.add(getEmail);
textViewsVal.add(getPassword);
textViewsVal.add(getPuntos);
Intent name_intent=this.getIntent();
final String name=name_intent.getExtras().getString("name");
reference = database.getReference(name).child("Perfil");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//rutina.setText(dataSnapshot.getKey());
int i = 0;
Log.d("number of childs",""+dataSnapshot.getChildrenCount());
for (DataSnapshot child : dataSnapshot.getChildren()) {
if (i < 10) {
textViewsName.get(i).setText(child.getKey());
textViewsVal.get(i).setText(child.getValue().toString());
Log.d("User key", child.getKey());
Log.d("User ref", child.getRef().toString());
Log.d("User val", child.getValue().toString());
i++;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
我想知道是否有一种简单的方法可以将其转换为 fragment ?任何帮助,将不胜感激。 我想这样做的原因是因为我想实现一个抽屉导航菜单,我已经看到你必须使用 fragment (我知道有一种方法可以用类来做,但它更复杂)而且我已经有了这个类,所以我想重用它而不是从头开始创建新 fragment 。
最佳答案
让我们试试这个:
- 扩展 fragment 并将
MyActivityClass
重构为MyFragmentClass
原创:public class MyActivityClass extends AppCompatActivity
已转换:public class MyFragmentClass extends Fragment
- 创建工厂方法并将您从
getIntent().getExtra()
获得的所有值添加为方法的参数
原文:String name=getIntent.getExtras().getString("name");
转换:
这个
public static MyFragmentClass newInstance(String name){
MyFragmentClass fragment = new MyActivity();
Bundle args = new Bundle();
args.putString(KEY_NAME, name);
fragment.setArguments(args);
return fragment;
}
还有这个,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
name = getArguments().getString(KEY_NAME);
}
}
- 覆盖方法
onCreateView()
并扩展您的布局
原创:setContentView(R.layout.activity_layout);
转换:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_layout, container, false);
return view;
}
将所有
findViewById(...);
语句放在onCreateView()
中并重命名为view.findViewById(...)
和其他不需要 Activity 运行的代码。覆盖
onActivityCreated()
并将所有需要Activty
的代码放在这里。- 删除已经转换为 fragment 的代码
这不是完美的答案,但应该有所帮助。
关于java - 如何在 Android Studio 中将 Activity 转换为 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430446/