0

我在名为 first_activity 和 second_activity 中有 2 个布局... first_activity 有一个按钮 button1,我在其上应用了 onclick 侦听器来制作一个简单的 toast,我在 FirstActivity 中使用了这个 first_activity ... second_activity 有一个按钮我已经在 second_activity 中包含了 first_activity,所以 second_activity 有 2 个按钮......现在已经编码并使用 FirstActivity 运行应用程序有主要活动,我得到第一个按钮的 toast onclick......现在 SecondActivity 扩展FirstActivity 沿着它自己的按钮 2 单击事件...现在我已将启动活动更改为 SecondActivity 并且在运行后我得到了只有第 2 个按钮而不是第一个按钮的单击事件..所以我在哪里犯了错误..我的意图是使代码重用例如我有一个应用程序,其中有 30 个布局,并且所有布局都有公共菜单,每个布局都包含该菜单,所以我只想为该菜单编写一次代码,然后在所有其他布局中重用该代码布局...

这是我的应用程序的代码.... first_activity:

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dip"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FirstActivity" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1st Button" />

第二个活动:

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FirstActivity" >


android:id="@+id/layout"/>

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/layout"
android:text="2nd Button" />

第一活动:

package com.example.codereuse;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class FirstActivity extends Activity {

Button b1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_activity);

b1 = (Button) findViewById(R.id.button1);

b1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Button 1 Clicked", Toast.LENGTH_LONG).show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

第二活动:

package com.example.codereuse;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class SecondActivity extends FirstActivity {

Button b2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);

b2 = (Button) findViewById(R.id.button2);

b2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Button 2 Clicked", Toast.LENGTH_LONG).show();
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

安卓菜单:

package="com.example.codereuse"
android:versionCode="1"
android:versionName="1.0" >


android:minSdkVersion="8"
android:targetSdkVersion="17" />


android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

android:name="com.example.codereuse.SecondActivity"
android:label="@string/app_name" >

android:name="com.example.codereuse.FirstActivity"
android:label="@string/app_name" >

读者回复很快...

4

1 回答 1

0

如果您有 30 个具有相同内容的布局,那么您可以为所有这些使用一个 xml 文件。

如果您使用来自一个活动的 id,则在不同活动中为元素使用相同的 id 没有问题。

于 2013-09-12T16:48:35.120 回答