使用来自不同布局的两个组件

时间:2014-02-21 23:10:25

标签: eclipse android-layout android

我有2个布局,在第一个布局中我有EditText,Button和第二个布局我有TextView。我想要的是当我在EditText中写东西时按下按钮复制第二个布局,但每次都会崩溃。有没有办法使用两个布局的组件或我错过了什么。如果这是不可能的,另一种方式就是好的。 THX

主要活动

public void onCreate(Bundle ivansad) {
            super.onCreate(ivansad);
            setContentView(R.layout.activity_main);
            Button Start = (Button) findViewById(R.id.bStart);
            Start.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    setContentView(R.layout.numbers);
                    Intent Changeto2 = new Intent (MainAct.this, Numgen.class);
                    startActivity(Changeto2);
                }
            }); 
        }

第二项活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.numbers);
    Button Next = (Button)findViewById(R.id.bNext);
    final EditText text = (EditText)findViewById(R.id.broj1);
    final TextView edit = (TextView)findViewById(R.id.lb1);
    Next.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub      
    edit.setText(text.getText());
        }
    });

}

第一个布局

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="Deprecated"
android:background="@drawable/grey_bg" >

<Button
    android:id="@+id/bNext"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_x="-1dp"
    android:layout_y="405dp"
    android:background="#000000"
    android:text="Dalje"
    android:textColor="#ffffff"
    tools:ignore="HardcodedText" />
<EditText
    android:textColor="#ffffff"
    android:id="@+id/broj1"
    android:layout_width="154dp"
    android:layout_height="50dp"
    android:layout_x="164dp"
    android:layout_y="6dp"
    android:background="@drawable/text_bg"
    android:ems="10"
    android:gravity="center"
    android:hint="1-49"
    android:inputType="number"
    tools:ignore="HardcodedText" >
</AbsoluteLayout>

第二版布局

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/grey_bg"
android:orientation="vertical">
<TextView
android:id="@+id/lb1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_x="80dp"
android:layout_y="107dp"
android:gravity="center"
android:text="  "
android:textSize="18sp"
tools:ignore="HardcodedText" />
</AbsoluteLayout>

1 个答案:

答案 0 :(得分:0)

您要做的是有两个独立的活动,一个用于编辑文本,另一个用于显示文本。

您要将布局设置为layout_main的第一个,并为该按钮设置回调。在你想要的回调中:

final EditText text = (EditText)findViewById(R.id.broj1);
Intent intent = new Intent(MainAct.this, NumGen.class);
Bundle bundle = new Bundle();
bundle.putString("mString",text.getText().toString());
intent.putExtras(bundle);
startActivity(intent);

然后在你的第二个活动(NumGen?)中你可以通过这样做得到你保存的那个字符串:

Bundle data = getIntent().getExtras();
String mString="";
if(data.containsKey("mString")){ mString=data.getString("mString"); }

您可能遇到的主要问题之一是XML文件中定义的ID与代码中的ID不同。之后,阅读活动的工作方式和传递信息。