android - как бороться при нажатии кнопок и получении результатов - обновлено -> кнопки не реагируют - PullRequest
0 голосов
/ 04 января 2012

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

Моя главнаякласс:

public class Radiation extends Activity implements OnClickListener {
View num_cores;
View num_mass;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Set up click listeners
    num_cores=(View) findViewById(R.id.select_cores);
    num_cores.setOnClickListener(this);
    num_mass=(View) findViewById(R.id.select_mass);
    num_mass.setOnClickListener(this);
}

//called when a button is clicked
public void onClick(View v) {
    switch (v.getId()){
    case R.id.num_cores:
        Intent i=new Intent(this,number_cores.class);
        startActivity(i);  
        break;
    case R.id.num_mass:
        Intent k=new Intent(this,number_mass.class);
        startActivity(k);  
        break;
}
}

}

Когда я нажимаю кнопку num_cores, пользователь переходит на другой экран и вводит некоторые данные в текстовое поле редактирования, а кнопка вычисления выполняет вычисления, а затемрезультат показан.

Вот класс number_cores.class:

public class number_cores extends Activity implements OnClickListener {
EditText num_cores;
View core_calcs;

 /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.numbercores);

    num_cores=(EditText) findViewById(R.id.num_cores);
    core_calcs=(View) findViewById(R.id.core_calcs);
    core_calcs.setOnClickListener(this);

}


    public void onClick(View v) {
        switch (v.getId()){
        case R.id.core_calcs:
            cores_func();
            break;

        }
      }
        public void cores_func(){
         //some calculations here with result "double fcores=.."
           Intent i=new Intent(this,core_calcs.class);
           i.putExtra("value",fcores);
          startActivity(i);  
       }
  }

core_calcs.java:

public class core_calcs extends Activity {

    TextView corecalcs;


     /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.core_calcs);

        corecalcs=(TextView) findViewById(R.id.corecalcs);
        double f=getIntent().getExtras().getDouble("value");
        corecalcs.setText(Double.toString(f));

    }

}

то же самое относится и к другой кнопке.

Как я могу справиться с этим? Я теряюсь в своих кнопках! Есть ли более эффективный способ?(Сейчас мое приложение не запускается)

- ОБНОВЛЕНО ---------------

Я не определил ширину кнопок вмой main.xml, поэтому программа аварийно завершилась.

Теперь он дает мне первый экран с моими двумя кнопками, но ничего не происходит, когда я нажимаю на них.

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Моя ошибка была в

public class Radiation extends Activity implements OnClickListener {
View select_cores;
View select_mass;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Set up click listeners
    select_cores=(View) findViewById(R.id.select_cores);
    select_cores.setOnClickListener(this);
    select_mass=(View) findViewById(R.id.select_mass);
    select_mass.setOnClickListener(this);
}

где у меня было "View num_cores", я изменил на "View select_cores" и теперь работает отлично!

0 голосов
/ 04 января 2012

Насколько я понимаю, вы просто берете данные из одного поля EditText. Использование второго действия может работать, но это немного излишне для выполнения этой задачи. Возможно, вам будет проще использовать что-то вроде Dialog http://developer.android.com/guide/topics/ui/dialogs.html

Однако это просто еще один способ подойти к вашему вопросу. Чтобы конкретно ответить на ваш вопрос, вы должны использовать:

Объявите это выше:

private static final int ACTIVITY_RESULT = 0;

Используйте это вместо startActivity (i);

startActivityForResult(i, ACTIVITY_RESULT);

и затем вы можете получить результат, используя:

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == ACTIVITY_RESULT) {
        if (resultCode == RESULT_OK) {
                        //Do stuff to captured result.
                    }
            }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...