好吧所以我试图将一个按钮/视图添加到ViewGroup已经存在的新活动之外。 这是我目前的代码:
的Src:
public class Main extends Activity {
Button btn, btn1;
LayoutInflater linflater;
LinearLayout l;
static int pos = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button ButtonBack = (Button) findViewById(R.id.dynamicoption);
ButtonBack.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// Perform action on click
startActivity(new Intent("com.nour.ImamKhomeini.DYNAMICOPTION"));
}
});
btn = (Button) findViewById(R.id.Button01);
l = (LinearLayout) findViewById(R.id.LinearLayout01);
linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View myView = linflater.inflate(R.layout.dynamicoption, l, true);
myView.setId(pos);
pos++;
}
});
btn = (Button) findViewById(R.id.Button01);
btn1 = (Button) findViewById(R.id.Button02);
l = (LinearLayout) findViewById(R.id.LinearLayout01);
linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
btn.setOnClickListener(new myListener());
btn1.setOnClickListener(new myListener1());
}
class myListener implements View.OnClickListener {
@Override
public void onClick(View v) {
View myView = linflater.inflate(R.layout.dynamicoption, null);
myView.setId(pos);
pos++;
l.addView(myView);
}
}
class myListener1 implements View.OnClickListener {
@Override
public void onClick(View v) {
if (pos != 0) {
pos--;
View myView = l.findViewById(pos);
l.removeView(myView);
}
}
}
}
这是我的xmls:
主:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="horizontal">
<Button android:id="@+id/Button01" android:background="@drawable/ic_launcher"
android:layout_height="45dip" android:layout_width="45dip"></Button>
<Button android:id="@+id/Button02" android:background="@drawable/ic_launcher"
android:layout_height="45dip" android:layout_width="45dip"></Button>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"></LinearLayout>
</LinearLayout>
dynamicoption.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:text="@+id/EditText01" android:id="@+id/EditText01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
<Button android:text="@+id/Button01" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
感谢任何帮助。 谢谢。
答案 0 :(得分:1)
我会做一些改变。看看我如何创建OnClickListener,您不需要创建新的子类。并注意我如何使用布局inflater:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View myView = linflater.inflate(R.layout.dynamicoption, l, true);
myView.setId(pos);
pos++;
}
});
当XML打开和关闭标记之间没有任何内容时:
<EditText
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/EditText01" ></EditText>
您可以使用/>
简写并为自己节省一些打字
<EditText
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/EditText01" />
这是你的onCreate()方法的样子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button ButtonBack = (Button) findViewById(R.id.dynamicoption);
ButtonBack.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
// Perform action on click
startActivity(new Intent("com.nour.ImamKhomeini.DYNAMICOPTION"));
}
});
l = (LinearLayout) findViewById(R.id.LinearLayout01);
linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View myView = linflater.inflate(R.layout.dynamicoption, l, true);
myView.setId(pos);
pos++;
}
});
btn1 = (Button) findViewById(R.id.Button02);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (pos > 0) {
pos--;
l.removeView(l.findViewById(pos));
}
}
});
}