0

我必须在所有活动中显示自定义视图,并且我想在一个通用类中做到这一点。

假设我有这三个活动,即

Activity_1

Activity_2

Activity_3

和常见的 Activity MainActivity

我想xml在所有 3 个活动中展示一个共同点。

我还需要将点击侦听器设置在一个公共位置,以便仅在需要时才需要更改。

我知道这是一个非常oops相关的问题。

这就是我所做的:

活动一:

public class ActivityOne extends CommonActivity{


Button button1;

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

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

    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent i=new Intent(ActivityOne.this,OtherActivity.class);
            startActivity(i);

        }
    });
}

}

活动一 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

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

    <include
    android:id="@+id/header_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    layout="@layout/common" />

主要活动:

public class MainActivity extends Activity {

Button button1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button1=(Button)findViewById(R.id.button1);


    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent i=new Intent(MainActivity.this,ActivityOne.class);
            startActivity(i);

        }
    });

}

}

主要活动 XML:

<RelativeLayout 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:context=".MainActivity" >

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/textView1"
    android:layout_alignRight="@+id/textView1"
    android:text="Button1" />

 </RelativeLayout>

公共活动

public class CommonActivity extends Activity{
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.common);


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

    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(CommonActivity.this, "Common Clicked", Toast.LENGTH_SHORT).show();

        }
    });

}

 }

通用活动 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

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

</LinearLayout>

现在,当我从 Activityone 单击常用按钮时,吐司没有显示。我必须做的更多,或者我做错了什么。

4

2 回答 2

0

您可以创建一个扩展的抽象类Activity,然后在那里实现通用功能。您还可以编写扩展此类时需要实现的抽象方法 例如:

 public abstract class MyAbstactActivity  extends Activity{
    //for example for onCreate
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
        //do your common stuff here and then overwrite it when you need to custumize
    }
    public  abstract doStuff();//Must implement this when you extend MyAbstractClass


    }

   public class MyActivity extends MyAbstactActivity {
    public  abstract doStuff(){//Code}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //do your work as usual.
    //setContentView(R.layout.main)--> is not needed but of course you can change the layout

}


}
于 2013-04-26T08:51:04.917 回答
-1

JAVA 遗产!!

让您的孩子扩展您在 oncreate 方法中设置布局的 MainActivity。

或使用寻呼机,然后滑动。

于 2013-04-26T08:44:12.100 回答