我在Android中使用了1个Activity和4个TabFragment。当我使用EditText在第二个TabFragment中添加一个keylistener时,我的第一个TabFragment打开了键盘。我控制了2 xml_layout彼此不同。
所以任何想法为什么碎片会相互影响以及如何防止这种情况? 。你有没有人面对这个问题?
tab_fragment_detailcomment.xml
<?xml version="1.0" encoding="utf-8"?>
``<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/profile_picture"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginStart="15dp"/>
<TextView
android:id="@+id/name_surname"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="15dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginStart="80dp">
<ImageView
android:id="@+id/starIcon"
android:layout_width="20dp"
android:layout_height="20dp" />
<TextView
android:id="@+id/starCount"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginStart="15dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="80dp">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="40dp"
android:background="@drawable/comment_box"
android:hint="Add Commment"
android:paddingLeft="10dp"
android:inputType="textVisiblePassword">
<requestFocus />
</EditText>
</LinearLayout>
TabFragment_DetailComment.java
public class TabFragment_DetailComment extends Fragment {
@BindView(R.id.profile_picture)
ImageView profile_picture;
@BindView(R.id.name_surname)
TextView name_surname;
@BindView(R.id.comment)
TextView comment;
@BindView(R.id.starIcon)
ImageView starIcon;
@BindView(R.id.starCount)
TextView starCount;
@BindView(R.id.editText)
EditText editText;
int feedId;
List<FeedComment> feedComment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, `
`Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.tab_fragment_detailcomment, container, false);
ButterKnife.bind(this,view);
feedId = ((FeedDetailActivity) getActivity()).getFeedId();
addKeyListener();
ServiceController service = new ServiceController();
Call<ResponseFeedComment> call = service.getFeedServiceCallInterface().getFeedComment(feedId);
call.enqueue(new Callback<ResponseFeedComment>() {
@Override
public void onResponse(Call<ResponseFeedComment> call, Response<ResponseFeedComment> response) {
if (response != null) {
feedComment = response.body().getData();
profile_picture.setImageResource(R.drawable.male);
for(int i=0; i < feedComment.size(); i++) {
name_surname.setText(feedComment.get(i).getDisplayToken());
comment.setText(feedComment.get(i).getBody());
starIcon.setImageResource(R.drawable.star);
starCount.setText(feedComment.get(i).getLikeCount().toString());
}
}else {
Log.v("Response", "NULL");
}
}
@Override
public void onFailure(Call<ResponseFeedComment> call, Throwable t) {
}
});
return view;
}
public void addKeyListener() {
// add a keylistener to keep track user input
editText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// if keydown and "enter" is pressed
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
// display a floating message
Toast.makeText(getContext(),
editText.getText(), Toast.LENGTH_LONG).show();
return true;
} else if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_9)) {
// display a floating message
Toast.makeText(getContext(),
"Number 9 is pressed!", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
});
}
}
FeedDetailActivity.java
公共类FeedDetailActivity扩展了AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
String nameSurname;
int feedId;
Bundle bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_feeddetail);
// toolbar = (Toolbar) findViewById(R.id.toolbar);
// setSupportActionBar(toolbar);
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
nameSurname = getIntent().getStringExtra("nameSurname");
Intent i = getIntent();
feedId = i.getIntExtra("feedId",0); // 20 for default value
// feedId = getIntent().getStringExtra("feedId"); // Hata burda
viewPager = (ViewPager) findViewById(R.id.pager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
}
public String getNameSurname() {
return nameSurname;
}
public int getFeedId() {
return feedId;
}
private void setupViewPager(ViewPager viewPager) {
FeedDetailActivity.ViewPagerAdapter adapter = new FeedDetailActivity.ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new TabFragment_DetailFeed(), "DETAIL");
adapter.addFragment(new TabFragment_DetailComment(), "COMMENT");
adapter.addFragment(new TabFragment_DetailImage(), "IMAGE");
adapter.addFragment(new TabFragment_DetailSurvey(), "SURVEY");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
答案 0 :(得分:0)
试试这个
设置android:clickable="true"
并将背景设置为每个片段xml的父布局。