java - 无法从另一个片段中打开一个片段 - 每个片段都混合在一起,两个片段同时在一个屏幕上
问题描述
我想从另一个片段中打开一个片段。但结果我得到了这个(两个混合片段):
以下是我想要转到下一个片段的片段的代码: public class ChatRoomFragment extends Fragment implements View.OnClickListener in l1.setOnItemClickListener
{
DatabaseReference reference;
static HashMap<String, String> dataHashMap = new HashMap<String, String>();
ArrayList<String> arrayList;
EditText e1;
ListView l1;
ArrayAdapter<String> adapter;
String name;
EditText ee;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.chatroom_fragment, container, false);
Button button = view.findViewById(R.id.button);
button.setOnClickListener(this);
super.onCreate(savedInstanceState);
e1 = (EditText)view.findViewById(R.id.editText);
l1 = (ListView)view.findViewById(R.id.listView);
arrayList = new ArrayList<>();
adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,arrayList);
l1.setAdapter(adapter);
FirebaseOptions options = new FirebaseOptions.Builder()
.../setting options
FirebaseApp.initializeApp(getActivity(), options, "secondary");
FirebaseApp app = FirebaseApp.getInstance("secondary");
reference = FirebaseDatabase.getInstance(app).getReference().getRoot();
request_username();
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Set<String> set = new HashSet<String>();
Iterator i = dataSnapshot.getChildren().iterator();
while (i.hasNext()) {
set.add(((DataSnapshot) i.next()).getKey());
}
arrayList.clear();
arrayList.addAll(set);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Toast.makeText(NavigationDrawerActivity.this, "No network connectivity", Toast.LENGTH_SHORT).show();
}
});
ChatFragment fragment = new ChatFragment();
l1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
dataHashMap.put("room_name", ((TextView) view).getText().toString());
dataHashMap.put("user_name", name);
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
});
return view;
}
public void request_username()
{
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Enter your name?");
ee = new EditText(getActivity());
builder.setView(ee);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
name = ee.getText().toString();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
request_username();
}
});
builder.show();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
insert_data(v);
break;
}
}
public void insert_data(View v)
{
switch (v.getId()) {
case R.id.button :
Map<String, Object> map = new HashMap<>();
map.put(e1.getText().toString(), "");
reference.updateChildren(map);
}
}
}
这是我想去的片段的代码:
EditText e1;
TextView t1;
private String user_name,room_name;
DatabaseReference reference;
String temp_key;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.chat_fragment, container, false);
Button button = view.findViewById(R.id.button2);
button.setOnClickListener(this);
super.onCreate(savedInstanceState);
e1= view.findViewById(R.id.editText2);
t1= view.findViewById(R.id.textView);
if(((AppCompatActivity)getActivity()).getSupportActionBar()!=null)
{
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Log.d("checkintent", getActivity().getIntent().toString());
//user_name = getActivity().getIntent().getExtras().get("user_name").toString();
user_name = ChatRoomFragment.dataHashMap.get("user_name").toString();
//room_name = getActivity().getIntent().getExtras().get("room_name").toString();
room_name = ChatRoomFragment.dataHashMap.get("room_name").toString();
FirebaseApp app = FirebaseApp.getInstance("secondary");
reference = FirebaseDatabase.getInstance(app).getReference().getRoot();
getActivity().setTitle(" Room - "+room_name);
reference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
append_chat(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
append_chat(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
append_chat(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return view;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == android.R.id.home)
getActivity().finish();
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
send(v);
break;
}
}
public void send(View v)
{
Map<String,Object> map = new HashMap<String,Object>();
temp_key = reference.push().getKey();
reference.updateChildren(map);
DatabaseReference child_ref = reference.child(temp_key);
Map<String,Object> map2 = new HashMap<>();
map2.put("name",user_name);
map2.put("msg", e1.getText().toString());
child_ref.updateChildren(map2).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Toast.makeText(getActivity().getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
});
e1.setText("");
}
public void append_chat(DataSnapshot ss)
{
String chat_msg,chat_username;
Iterator i = ss.getChildren().iterator();
while(i.hasNext())
{
chat_msg = ((DataSnapshot)i.next()).getValue().toString();
chat_username = ((DataSnapshot)i.next()).getValue().toString();
t1.append(chat_username + ": " +chat_msg + " \n");
}
}
}
我应该改变什么才能ChatFragment
只打开而不是同时打开两个片段?(我只需要粉红色的物品出现在屏幕上)
解决方案
推荐阅读
- single-sign-on - 从主机访问 windows server 12 r2 adfs
- algorithm - 为什么余弦距离的 KNN 比欧几里得距离快得多?
- java - 使用tomcat和java从eclipse测试数据库连接的以下步骤中缺少什么?我收到404错误
- r - 使用 R 从 Web Feature Service (WFS) 读取信息
- python - 使用for循环(Python)按顺序打印用户输入
- r - rds文件解压后大小不一致
- opencv - 为什么solvePnPRansac返回一个过大的平移向量?
- jenkins - 在 Jenkins 中添加 Gitea 服务器 URL 报告 403 被禁止
- c - 我无法在 C 中创建链表
- php - 如何在phppresentation中使用字符串访问类的常量变量