在没有活动类中使用Activity函数

时间:2014-12-28 14:46:51

标签: android

这可能是一个noob问题但仍然存在。我需要我的主要活动类将使用其他类来做一些代码。此类使用来自Activity的函数,如getPackageName(),new Intent等。 所以我需要一些帮助,例如我需要通过类来设置setContentView。我该怎么做?

主要活动:     package com.example.testapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);


        SetContentView cn = new SetContentView();
        cn.MySetContentView(R.layout.activity_main);
    }
}

setViewClass方法:         package com.example.testapp;

    public class SetContentView
    {
        void MySetContentView(int activityMain)
        {

            setContentView(R.layout.activity_main); //no set content view if not activity
        }
    }

2 个答案:

答案 0 :(得分:0)

如果我说得对,你可以尝试扩展Activity的根类并持有你的方法,然后在MainActivity中扩展它:

    public class Helper extends Activity {
    ... // your methods, e.g. MySetContentView
    }

然后:

    public class MainActivity extends Helper {
    ... // any call to methods in Helper
    }

如果您有许多共享相同代码的活动,这可能很有用 - 您可以让它们都扩展相同的Helper类,并且仍然是活动。

在你的情况下:

    public class Helper extends Activity {
        public void mySetContentView(int layout) {
               setContentView(layout)
        }
    }

然后:

    public class MainActivity extends Helper {

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        mySetContentView(R.layout.your_layout);
    }

答案 1 :(得分:0)

public class MainActivity extends Activity
{
    private static MainActivity instance;

    public static MainActivity getInstance() {
          return instance;
    }   
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        instance=this;
    }
}
public class OtherClass 
{
   protected void someMethod() {
      MainActivity ma= MainActivity.getInstance();
     //use ma methods... 
   }
}