2012-10-22 55 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或两者? –