【问题标题】:onActivityResult in ZxingZxing 中的 onActivityResult
【发布时间】:2015-01-16 23:18:00
【问题描述】:

我将 Zxing 库集成到我的项目中,我有: 1. MainActivity 带有按钮,以CaptureActivity 开头 2. SecondActivity 与 textView。 我需要把CaptureActivity的结果代码放到SecondActivity的textView中,我把一些代码放到CaptureActivityonActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == RESULT_OK) {
  if (requestCode == HISTORY_REQUEST_CODE) {
      Intent intent1=new Intent(this, SecondActivity.class);
      startActivity(intent1);


    int itemNumber = intent.getIntExtra(Intents.History.ITEM_NUMBER, -1);
    if (itemNumber >= 0) {
      HistoryItem historyItem = historyManager.buildHistoryItem(itemNumber);
      decodeOrStoreSavedBitmap(null, historyItem.getResult());
    }
  }
}

但是什么也没发生,我哪里错了?我在stackoverflow上看了很多,但看不懂

我的主要活动:

public class MainActivity extends ActionBarActivity {

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


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}



public void onCapture(View view) {
    Intent data=new Intent(this, CaptureActivity.class);

    startActivity(data);
}

}

从方法 onCapture 我启动 Zxing 的 CaptureActivity ,

第二个活动:

public class SecondActivity extends ActionBarActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); TextView tv=(TextView)findViewById(R.id.tv); } }

【问题讨论】:

  • 你能添加整个代码吗?再解释一下..
  • 我有主要活动:
  • 你的意思是 onActivityResult 永远不会被调用吗?如果是这样,请您发布调用 CaptureActivity 的代码。
  • 我从 startActivity 调用 CaptureActivity ,没关系,当我扫描 QR/Barcode 时,我无法从 CaptureActivity 调用 SecondActivity

标签: android android-activity zxing


【解决方案1】:

您像这样启动活动:

public void onCapture(View view) {
    Intent data=new Intent(this, CaptureActivity.class);

    startActivity(data);
}

但你需要使用 startActivityForResult

http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29

您还需要将 onActivityResult 代码移动到 MainActivity,因此流程将是

MainActivity -> CaptureActivity -> MainActivity -> 启动第二个活动

【讨论】:

    【解决方案2】:

    您必须使用 puteextra 将数据从一个活动发送到另一个活动。

    Intent i = new Intent(this, SecondActivity.class);   
    String s = "whatever";
    i.putExtra("YOU_NAME_IT", s);
    startActivity(i);
    

    然后,您必须在 SecondActivity 中获取该字符串。

    Extras extras = getIntent().getExtras();
    extras.getString("YOU_NAME_IT");
    

    希望对你有帮助!

    【讨论】:

    • 我知道这一点,但我不明白我必须把这段代码放在哪里,到 CaptureActivity?我必须把这个放在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2018-08-16
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多