2012-10-22 57 views
0

這是我的代碼。我應該更改或添加什麼來轉到其他佈局?我正在做QR代碼掃描器,我試圖在掃描代碼爲「1234」時進行掃描,它將轉到新的佈局名稱爲abcd.xml。Android如何從目前的佈局去新的佈局android?

package wj.com; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.ColorStateList; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class OCTotActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 
public void onClick (View view){ 
    IntentIntegrator integrator = new IntentIntegrator(this); 
    integrator.initiateScan(); 
} 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
     if (scanResult != null) { 
     // handle scan result 
      String barcode; 

      barcode = scanResult.getContents();{ 
       if (barcode.equals("1234")){ 
        setContentView(R.layout.abcd); 
       } 

       } 

      EditText etBarcode = (EditText) findViewById(R.id.etBarcode); 

      etBarcode.setText(barcode); 
     } 

} 
} 

回答

0

最簡單的方法是將main和abcd嵌套在FrameLayout中。 FrameLayout是一堆子視圖,可以一次顯示其中的一個。

子視圖繪製在堆棧中,最近添加的子項位於頂部。

這裏是將利用的FrameLayout和重用現有的佈局佈局的樣品部分:在的onCreate

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <include android:id="@+id/main" layout="@layout/main" /> 
    <include android:id="@+id/abcd" layout="@layout/abcd" /> 
</FrameLayout> 

然後,找到ABCD並將其可見性設置爲View.INVISIBLE:

findViewById(R.id.abcd).setVisibility(View.INVISIBLE); 

當條形碼等於1234,那麼這樣做:

// Show the abcd layout 
findViewById(R.id.abcd).setVisibility(View.VISIBLE); 
// Hide the main layout 
findViewById(R.id.main).setVisibility(View.INVISIBLE); 
+0

爲什麼這個東西出來「應用程序意外停止」? –

+0

您可能遇到了一個異常,它會使您的應用程序崩潰。看看LogCat,看看例外是什麼。如果您使用的是Eclipse,那麼您可以切換到Debug透視圖,確保您的設備已被選中,然後將過濾器設置爲Error。 – louielouie

+0

這是框架佈局添加到main.xml或abcd.xml或兩者? –