2011-03-18 74 views
1

我有一个项目正在运行,我在按钮按下时调用ZXing扫描器,扫描完bardcode后,出现另一个活动,它显示扫描的数据,我可以放入一定数量。然后,我得到2个按钮完成,这将返回到主窗口,和下一个按钮关闭此活动,并再次调用ZXing,扫描代码后,窗口(应该)再次出现,我可以放入数量等等..等等......但在第一个下一个按钮推后,金额输入窗口不会出现,它使我回到主窗口。我在这里得到了2个活动代码。发布完成活动

这是我第一次在按钮按下时调用ZXing的主要活动。 package org.example.sudoku;

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.content.Intent; 
import android.app.AlertDialog; 
import com.google.zxing.integration.android.IntentIntegrator; 
import com.google.zxing.integration.android.IntentResult; 

public class Sudoku extends Activity implements OnClickListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    // Set up click listeners for all the buttons 

     View exitButton = findViewById(R.id.exit_button); 
     exitButton.setOnClickListener(this); 
     View scanButton = findViewById(R.id.scan_button); 
     scanButton.setOnClickListener(this); 
     View editButton = findViewById(R.id.about_button); 
     editButton.setOnClickListener(this); 

    } 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.scan_button: 
      Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "ONE_D_MODE"); 
      startActivityForResult(intent, 0); 
     break; 
     case R.id.about_button: 
      Intent about = new Intent(this.getApplicationContext(),About.class); 
      Bundle b = new Bundle(); 

      b.putString("key","blablabla"); 


      about.putExtras(b); 
      startActivityForResult(about, 0); 
     break; 
     case R.id.exit_button: 
      finish(); 
     break; 


        } 
       } 



    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 
       String contents = intent.getStringExtra("SCAN_RESULT"); 
       //String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 

       // Handle successful scan 
       Intent result = new Intent(this.getApplicationContext(),Result.class); 
       Bundle b = new Bundle(); 
       b.putString("content",contents); 
       result.putExtras(b); 
       startActivityForResult(result, 0); 



      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
      } 
     } 
    } 
    /*protected void onActivityResult(int requestCode, int resultCode,Intent data) { 
       switch(requestCode) { 
        case IntentIntegrator.REQUEST_CODE: { 
         if (resultCode != RESULT_CANCELED) { 
          IntentResult scanResult =IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
          if (scanResult != null) { 
           String upc = scanResult.getContents(); 
           Intent result = new Intent(this.getApplicationContext(),Result.class); 

           Bundle b = new Bundle(); 
           b.putString("content",upc); 
           result.putExtras(b); 
           startActivityForResult(result, 0); 
          } 
         } 
         break; 
        } 
       } 
    }*/ 
} 

这是扫描完成后我即将开始的活动。

package org.example.sudoku; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.*; 
import android.content.Intent; 

public class Result extends Activity implements OnClickListener { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.result); 

     Bundle b = getIntent().getExtras(); 
     String product = b.getString("content").toString(); 
     TextView et1 = (TextView) findViewById(R.id.edit_text);   
     et1.setText(product); 

     View finishButton =findViewById(R.id.finish_button); 
     finishButton.setOnClickListener(this); 
     View nextButton =findViewById(R.id.next_button); 
     nextButton.setOnClickListener(this); 


     } 
     public void onClick(View v) { 
      switch (v.getId()) { 

      case R.id.finish_button: 
       finish(); 
      break; 
      case R.id.next_button: 
       Intent intent2 = new Intent("com.google.zxing.client.android.SCAN"); 
       intent2.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "ONE_D_MODE"); 
       startActivityForResult(intent2, 0); 
       finish(); 
      break; 

      } 
     } 
     public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
      if (requestCode == 0) { 
       if (resultCode == RESULT_OK) { 
        String contents = intent.getStringExtra("SCAN_RESULT"); 
        String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
        // Handle successful scan 
        Intent result = new Intent(this.getApplicationContext(),Result.class); 
        Bundle b = new Bundle(); 
        b.putString("content",contents); 
        result.putExtras(b); 
        startActivityForResult(result, 0); 

       } else if (resultCode == RESULT_CANCELED) { 
        // Handle cancel 
       } 
      } 
     } 




} 

在本次活动是2个按钮,完成和明年,完成按钮工作正常,它将关闭活动很好,但接下来的按钮,它调用斑马线的问题,但扫描之后它把我带回到主要活动。但是,如果我不打电话结束()这个按钮后im完成像10扫描我必须关闭所有的活动。

我可能需要一点帮助。谢谢你。

+0

请使用在未来的'Android的activity'标签,而不是'activity': ) – 2012-07-09 04:15:16

回答

2

在你的Result类中,你不应该删除finish()吗?

case R.id.next_button: 
      Intent intent2 = new Intent("com.google.zxing.client.android.SCAN"); 
      intent2.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "ONE_D_MODE"); 
      startActivityForResult(intent2, 0); 
      finish(); // REMOVE THIS 
     break; 

当你开始活动,期待结果,但活动已完成?

如果你不完成它的类将得到的结果和启动另一个结果类,然后你要完成

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 
       String contents = intent.getStringExtra("SCAN_RESULT"); 
       String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
       // Handle successful scan 
       Intent result = new Intent(this.getApplicationContext(),Result.class); 
       Bundle b = new Bundle(); 
       b.putString("content",contents); 
       result.putExtras(b); 
       startActivityForResult(result, 0); 
       finish(); // NEW FINISH 
      } else if (resultCode == RESULT_CANCELED) { 
       // Handle cancel 
      } 
     } 
    } 
+0

谢谢你,它完美的作品。 – 2011-03-18 15:14:58