2014-04-25 4 views
-2

나는 안드로이드 개발에서 시작되었고 나는 이라고 불리는 setContentView()을 닫아야한다. 여기에서 myCurrent 화면은 다른 레이아웃 위에 배치 된 레이아웃이다. 내가 activity_main을 뒤로 키 점프를 누르고 나는 팽창 레이아웃어떻게하면 setContentView를 닫거나 이전 레이아웃의 화면을 비정상적으로 늘릴 수 있습니까?

+3

질문에 더 자세히 설명해야합니다. 몇 가지 예제 코드를 보여줍니다. 시도한 것은 무엇이고 작동하지 않는 것은 무엇입니까? – elevine

+1

"다른 레이아웃 위에 펼쳐지는"의미는 무엇입니까? – CommonsWare

+0

팽창 된 뷰를 닫고 배경에있는 뷰를 표시하고 싶습니까? – zgc7009

답변

1

을 할 때 당신이 조각을 전환하려는처럼

public class MainActivity extends Activity { 

private SQLiteDatabase myDb; 
private String dbPath = "/data/data/com.example.dbapp/databases/testData"; 

private boolean dbExist(String dbPath){ 
    File fakeDb = new File(dbPath); 
    return fakeDb.exists(); 
} 

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

    if(!dbExist(dbPath)){ 
    myDb = openOrCreateDatabase(dbPath, MODE_PRIVATE, null); 
    myDb.execSQL("CREATE TABLE files(cn_userName INTEGER PRIMARY KEY AUTOINCREMENT);"); 
    myDb.close(); 
    }else{ 
     fillDb(); 
    } 
} 

private void fillDb(){ 

    LinearLayout myScroll = (LinearLayout) findViewById(R.id.idOfmyScroll); 
    if(myScroll.getChildCount() > 0){ 
     myScroll.removeAllViews(); 
    } 

    myDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READONLY); 
    Cursor myDbCur = myDb.rawQuery("SELECT * FROM files", null); 

    for(int i = 0; i < myDbCur.getCount(); i++){ 
     View name = getLayoutInflater().inflate(R.layout.name_list, null); 
     TextView userName = (TextView)name.findViewById(R.id.idName); 

     userName.setText(myDbCur.getString(myDbCur.getColumnIndex("cn_userName")); 
     myScroll.addView(name); 
     myDbCur.moveToNext(); 
     myDb.close(); 

     name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      setContentView(R.layout.otherUserData); 
      userLastName = (TextView)findViewById(R.id.txtLastName); 
      nombreContacto.setText(userName + "Her LastName"); 
      } 
     }); 
    } 
} 

그것은 소리 : 여기

내 코드? 또 다른 옵션은 프레임 레이 아웃을하고 필요할 때 조각을 드롭하는 것입니다.

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

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" /> 


</LinearLayout> 

그런 다음 해당 컨테이너를 활동에 조각으로 채 웁니다.

FragmentManager fm = getSupportFragmentManager(); 
Fragment myFragment = fm.findFragmentByTag(MyFragment.TAG); 
if (myFragment == null) { 
     myFragment = new MyFragment(); 
} 
fm.beginTransaction().add(R.id.container, myFragment, MyFragment.TAG).commit(); 

그런 다음 onclick에서 add 대신 fragmenttransaction 함수를 사용할 수 있습니다.