2013-10-10 122 views
0

我正在开发平板电脑和智能手机的应用程序。片段,两款智能手机和平板电脑?

我的问题是,如果我需要其他类和重复的代码,当即时通讯使用手机或平板电脑。这是我的代码..

large_land/main.xml中

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<fragment class="com.example.example.FragmentMenu" 
    android:id="@+id/FragmentMenu" 
    android:layout_weight="30" 
    android:layout_width="0px" 
    android:layout_height="match_parent" /> 

<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_weight="70" 
    android:layout_width="0px" 
    android:layout_height="match_parent" /> 

布局/ main.xml中

<?xml version="1.0" encoding="utf-8"?> 
    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    class="com.example.example.FragmentMenu" 
    android:id="@+id/FragmentMenu" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

main.java

public class main extends SherlockFragmentActivity { 
private boolean isTablet; 

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

    isTablet = findViewById(R.id.content_frame) != null; 
    if(isTablet) { 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.add(R.id.content_frame, new FragmentInicio()); 
     ft.commit(); 
    } 



    final FragmentMenu frgMenu =(FragmentMenu)getSupportFragmentManager().findFragmentById(R.id.FragmentMenu); 
    frgMenu.setListMenuListener(new MenuListListener() { 

     @Override 
     public void onListMenuSeleccionado(Menu_List c) { 
      // TODO Auto-generated method stub 
      Toast.makeText(MainActivity.this, String.valueOf(c.getID()), Toast.LENGTH_SHORT).show(); 

      // HERE IS MY PROBLEM.. WHEN THE DEVICE IS A TABLET THE APP 
      // OPEN 'FRAGMENTINICIO' OR 'FRAGMENTBLOG', 
      // BUT WHEN THE DEVICE IS A MOBILE. DO I NEED TO CREATE ANOTHER CLASS AND DUPLICATE CODE? 


      if(isTablet) { 
       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       switch (c.getID()) { 
       case 0: 
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); 
        ft.replace(R.id.content_frame, new FragmentInicio()); 
        ft.commit(); 
        break; 
       case 1: 
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
        ft.replace(R.id.content_frame, new FragmentBlog()); 
        ft.commit(); 
        break; 
       } 
      } else { 
       Intent i; 
       switch (c.getID()) { 
       case 0: 
        i = new Intent(main.this, InicioActivity.class); 
        startActivity(i); 
        break; 
       case 1: 
        i = new Intent(main.this, BlogActivity.class); 
        startActivity(i); 
        break; 
       } 
      } 
     } 
    }); 
} 
} 

对不起我的英语

回答

2

只有你查看基于类应该被复制,以适应屏幕大小。

对于你应该保持其作为一个单独的类,并按照MVC模式在视图中不应该有任何关系数据的数据,控制器/通用的DataSource接口/类应处理数据和视图功能之间的代码。

0

不,你不需要两个类。如果一个布局文件中的所有视图都存在于其他布局中,则无需进行任何特殊处理。但是,如果视图不同和/或其ID不匹配,则必须在类内进行检测并相应地分配值。

你必须处理的一件事是你的意见的状态。正确处理生命周期以处理旋转通过onSaveInstanceState()onRestoreInstanceState()

就是这样!

相关问题