2011-12-18 7 views
1

startActivityForResult()を使用して結果を取得

(それは私が結果を取得しようとしました方法を示していますように、メインポイントがどこにあるか)私は私がここで行われています私のコードは私のページにある、それから、私の電卓と値をオープンしようとしています
TextView.OnClickListener listener = new TextView.OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     startActivityForResult(new Intent("com.easyPhys.start.calculator"), 1); 
    } 
}; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==1) 
    { 
     Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show(); 
    } 
} 

これは私がcalculator.javaからの結果を与えることを試みた方法です:プログラムは答えを閉じて、与えないよう

mClickListener = new ButtonClickListener(); 
int idList[] = { R.id.button0, R.id.button1, R.id.button2, 
R.id.button3, R.id.button4, R.id.button5, R.id.button6, 
R.id.button7, R.id.button8, R.id.button9, R.id.buttonLeftParen, 
R.id.buttonRightParen, R.id.buttonPlus, R.id.buttonDone, 
R.id.buttonMinus, R.id.buttonDivide, R.id.buttonTimes, 
R.id.buttonDecimal, R.id.buttonBackspace, R.id.buttonClear, R.id.buttonPow, R.id.buttonSin, R.id.buttonCos,R.id.buttonTan,R.id.buttonAcos,R.id.buttonAtan,R.id.buttonAsin,R.id.buttonLog,R.id.buttonLog10,R.id.buttonComma,R.id.buttonToradians,R.id.buttonTodegrees }; 

     for(int id : idList) { 
     View v = findViewById(id); 
     v.setOnClickListener(mClickListener); 
     } 

     private class ButtonClickListener implements OnClickListener { 

     @Override 
     public void onClick(View v) { 
     case R.id.buttonDone: 

     if(mMathString.length() > 0); 

    Bundle bundle = new Bundle(); 
    bundle.putString("str", mMathString.toString()); 

    Intent in = new Intent(); 
    in.putExtras(bundle); 
    setResult(1, in); 


new View.OnClickListener() {  
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub  
    finish(); 
    } 
    }; 
    break; 

誰も私が間違っていたところ、私が理解するのを助けることができますか?

+2

こんにちはLG、あなたが手伝ってくれる人にすばやく理解できるように、投稿されたコードの量を減らしてください。 –

+0

コードを読むのは本当に難しいです。インデントを改善し、コードの量を減らそうとしてください。 – Dalmas

+0

申し訳ありませんが、私はあなたが私が何をしたかを見ることができたが欲しかった –

答えて

0

これは間違っている:

startActivityForResult(new Intent(modernphysics5.this, calculator.class), 1); 

EDIT:

startActivityForResult(new Intent("com.easyPhys.start.calculator"), 1); 

あなたは(modernphysics5と呼ばれ、あなたの活動のクラスを想定)コンストラクタで、現在のコンテキストを提供し、クラス名を指定する必要があります。

これも間違っています:

Intent in = new Intent(mMathString.toString()); 
setResult(1,in); 

これはIntent(String)コンストラクタの適切な使用ではありません。あなたが意図して文字列を送信したい場合は、Bundleを使用する必要があります。

Bundle bundle = new Bundle(); 
bundle.putString("str", mMathString.toString()); 

Intent in = new Intent(); 
in.putExtras(bundle); 
setResult(1, in); 
+0

「等価」ボタンを押しても戻ってこない –

+0

私は自分の答えを編集してくれました。 – Dalmas

+0

まだ同じ効果があります。 finish()の代わりに何か別のものを使うべきですか? –

0

はsuper.onActivityResult

前に2番目の発言をonActivityResultからあなたのコードを入れてみてください、あなたが正常になるためにあなたのrequestCodeをチェックするということです同じではなく、あなたの応答コードのための応答がどこか別の場所から来るかもしれないとして(ただし、単にマイナー1;))

EDIT:あなたのbtnEqualsに

+0

問題は、「等価」ボタンを押しても電卓が閉じないということです。私のレスポンスコードで何が悪いですか? –

+0

レスポンスコードには何も悪いことはありませんが、レスポンスコードが何であるかをonresponseでチェックします。通常はあなたが行うことです:requestCodeをチェックしますが、私が言ったように:これはマイナーなものです...異なった反応を起こす必要がある複数の応答がある場合には、それは重要になるだけです – vanleeuwenbram

+0

今見ているとおりに私の質問を変更しましたが、まだ動作しません。 –

0

をonClickListenerを入れて、あなたのONCことを確認しましたリックメソッドが呼ばれていますか?私が尋ねる理由は、onClickのコードを表示するが、setOnClickListenerを呼び出してequalsボタンに対してこれを設定したことを示していないからです。

+0

私のコードをそれは本当にどのように見える。そこに間違いがありますか? –

+0

申し訳ありませんが、あなたが投稿した内容は、物事をはっきりとはっきりさせません。あなたは、mClickListenerで渡すsetOnClickListenerを呼び出すループを表示します。問題は、mClickListenerが何であるかを表示しないことです。さらに、上に2つのonClickメソッドが表示されていますが、どちらが呼び出されるかを判断するのに十分な情報がありません。 –

+0

もう少しコードをもう一度含めました。もっと説明する必要があります。 –

0

この質問にもう一度答える必要がある場合は、CLASS_NAME.this.finish();を使用してみてください。 (CLASS_NAMEはあなたが戻したいクラスの名前です)。

関連する問題