繁体   English   中英

在不同的设备(平板电脑和电话)上呼叫两个不同的活动

[英]Calling two different activities on different devices (tablet and phone)

在这里,我正在尝试在不同的设备(Android平板电脑和Android手机)上启动活动。 有没有一种方法可以使用if语句来检查应基于设备加载的活动? 这是我的代码:

Button buttonGo = (Button) findViewById(R.id.button_goToActivity);
         buttonGo.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (tablet device) {
                     startActivity(new Intent(MainActivity.this, TabletActivity.class));
                 } else {
                     startActivity(new Intent(MainActivity.this, AndroidPhoneActivity.class));
             }
         });

谢谢你的努力...

为了实现这一目标,您必须使用Fragment而不是Activity Fragments设计哲学正是你想要的。 您可以查看示例以了解它是如何实现的。 这是一个带有两个Fragments的主要细节应用程序,当设备处于纵向模式或它不是平板电脑时它只显示主设备,否则它还显示主设备旁边的详细信息,当您从列表中选择项目时,您将看到详细信息无需参加其他Activity

首先,作为Android最佳实践,建议使用Fragments而不是Activity来实现您的要求。

但如果您热衷于使用Activity,那么下面是查找设备类型和加载不同活动的解决方案。

1)有2个值文件夹:values - > strings.xml和values-sw600dp - > strings.xml

2)在xml中创建字符串值

<string name="device_type">PHONE</string> in values -> strings.xml
<string name="device_type">TABLET</string> in values-sw600dp -> strings.xml

3)创建一种方法来检查当前设备是否为手机

public boolean isPhone() {
   String deviceType = getResource().getString(R.string.device_type);

   if (deviceType.equalsIgnoreCase("PHONE") {
     return true;
   } else {
     return false;
   } 
}

4)根据设备加载您的活动,就像您在上面的代码段中所做的那样

如果这有帮助,请告诉我......

最有可能的,你应该有两个独立的活动在这里。 相反,您应该为同一活动设置两种不同的布局 手机的布局应位于常规res/layout文件夹中,平板电脑的布局应位于res/layout-large文件夹中。 请阅读支持不同的屏幕以获取更多详细信息。

如果您对平板电脑活动和电话活动使用相同的功能,则不需要为此执行两项活动。 您需要为Tablet和Phone制作两个不同的Layout xml。

  1. 创建一个名为:layout-large和layout-xlarge的Layout文件夹。
  2. 现在,从常规布局文件夹复制xml文件,然后粘贴到两个新的布局文件夹中。
  3. 无需更改xml文件的名称。
  4. 现在,要为平板电脑进行设计,请调整layout-large和layot-xlarge的xml文件。
  5. 现在运行应用程序平板电脑和手机机器人将根据大小和屏幕密度选择xml。

    注意:功能应该相同。

如果:您希望为手机和平板电脑显示不同功能的屏幕。 使用此代码进行检查。

    if ((getResources().getConfiguration().screenLayout & 
    Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {


   }

希望这对你有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM