我有一个片段,里面有一个按钮。单击该按钮后,它应该动态地向布局添加新的编辑文本。我该怎么办?
主要活动:
6.21137766, 0.01412189, 0.38315024, -0.60655271
片段:
package comx.example.amithy.hw4;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements BlankFragment.addnew{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction()
.add(R.id.container,new BlankFragment(),"add")
.commit();
}
@Override
public void add() {
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = new EditText(MainActivity.this);
editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
});
}
}
主要activity.xml文件:
package comx.example.amithy.hw4;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.constraint.ConstraintLayout;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
public class BlankFragment extends Fragment {
private addnew mListner;
public BlankFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListner.add();
}
});
}
public interface addnew{
void add();
}
}
片段的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
可以从主要活动中访问片段中的按钮吗?并单击添加片段按钮中的现有编辑文本下方添加编辑文本?
答案 0 :(得分:0)
您可能需要对Fragment
的布局进行某种程度的重构,以使EditText
显示在Button
下方,但是您应该能够通过获取一个引用容器视图(在本例中为ConstraintLayout
),然后将其添加。因此,假设ConstraintLayout
具有android:id=@+id='myConstraintLayout'
,您应该可以从MainActivity
执行此操作:
findViewById(R.id.myConstraintLayout).addView(editText);
要使其显示在Button
下,您需要重构以在布局中的某处使用垂直LinearLayout
(并将上面的ID替换为该容器的ID),或以编程方式将所有布局参数添加到EditText
中,以使其显示在所需位置。