2011-12-18 2 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("com.easyPhys.start.calculator"), 1); 

Вы должны обеспечить текущий контекст в конструкторе и указать имя класса (если ваш класс активности называется modernphysics5):

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

EDIT:

Это также неверно:

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

попробовать положить ваш код от onActivityResult до того super.onActivityResult

второе замечание состоит в том, что вы обычно проверить ваш requestCode быть то же самое, а не для ответа кода как ответ может прийти откуда-то еще (только незначительную один, хотя;))

EDIT: Положите onClickListener на ваш btnEquals

+0

Проблема заключается в том, что калькулятор не закрывается после нажатия кнопки «равно». И что плохо с моим кодом ответа? –

+0

ничего плохого с кодом ответа, но вы проверяете onresponse для вашего кода ответа: обычно вы делаете это: вы проверяете requestCode, но, как я уже сказал, это второстепенный ...это только деталь, которая становится важной, если у вас есть несколько ответов, в которых вам нужно реагировать по-другому. – vanleeuwenbram

+0

Я изменил свой вопрос, чтобы показать, как он выглядит сейчас, но он все еще не работает. –

0

Подтвердили ли вы, что ваш OnC лизать метод? Причина, по которой я спрашиваю, заключается в том, что вы показываете код для onClick, но вы не показываете, что вы устанавливаете это для кнопки equals, вызывая setOnClickListener.

+0

Я изменил свой код на как это выглядит на самом деле. Вы видите там ошибку? –

+0

Извините, но то, что вы опубликовали, не очень многое проясняет. Вы показываете цикл, в котором вы вызываете setOnClickListener, проходящий в mClickListener. Проблема в том, что вы не показываете, что такое mClickListener. Кроме того, теперь отображаются два метода onClick, но недостаточно информации для определения того, какой из них будет вызываться. –

+0

Я снова включил еще один код. Это должно объяснить больше. –

0

Если вам еще нужно ответить на этот вопрос, попробуйте использовать: CLASS_NAME.this.finish(); (CLASS_NAME - это имя вашего класса, с которого вы хотели бы вернуться).

Смежные вопросы