如何从非父活动访问布局

时间:2014-01-13 15:03:42

标签: android xml android-layout

我有一个名为Main的活动,它的根XML布局是一个相对布局。如何使用Fragment从不同的Activity访问这个相对布局(比如说“BG”)?这是主要活动(它有相对布局):

public class Main extends Activity {

    RelativeLayout main; // Its id is "main_layout"

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

    @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;
    }   
}

这是我想要访问主要相对布局的第二个活动:

public class BG extends Activity {

    RelativeLayout main;

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

        setBackground();
    }

    @SuppressWarnings("deprecation")
    private void setBackground()
    {
        main = (RelativeLayout)findViewById(R.id.main_layout);???
        Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/bg.jpg");
        BitmapDrawable bd = new BitmapDrawable(getResources(), bitmap);
        main.setBackgroundDrawable(bd);
    }
}

如果我在清单文件中将主要父活动设置为BG,我可以使用此方法吗?

2 个答案:

答案 0 :(得分:0)

  

如何使用Fragment从其他布局访问此相对布局   活动(比方说“BG”)?

你为什么要这样做?

Fragments旨在由Activities使用和管理。一个Activity可以有多个Fragments。如果您希望UI由两个“根”布局组成,则应该有两个Fragments及其各自的UI。然后,您可以使用Activity获取每个Fragments及其各自布局的参考。

如果您希望所有Activities分享一些常用功能,您可以创建一个BaseActivity,并从中获取所有其他Activities extends

如果你想要的是一个常见的背景或者那个问题,可以在xml中定义的一些常见属性你应该使用Theme,如下面建议的WarrenFaith。

答案 1 :(得分:0)

您只想在整个应用中使用相同的背景?这就是我从这个问题中理解的。如果是这样,您需要查看styles.xml文件并在那里设置背景或其他主题属性。这将适用于您的其余应用程序。因此,您不必为每个布局设置背景。

http://developer.android.com/guide/topics/ui/themes.html