如何将Button Click事件中的值传递给Android中的另一个类?

时间:2014-05-18 17:40:19

标签: android function button

我正在尝试在Android中编写代码,以便将按钮点击的值传递给另一个类。我在日志中得到0值,我没有找到任何技术来发送正确的值。

请仔细阅读以下代码:

Java代码:

MainActivity.java

package com.example.mybuttonvalue;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;


public class MainActivity extends Activity 
{

Activity activity;

Context cont;

public static int mysum;

@Override
protected void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btn = (Button)findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) 
        {


            Intent intent = new Intent(MainActivity.this,MySum.class);

            intent.putExtra("key",5);

            startActivityForResult(intent,2); 




        }
    });


}

@Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  
   {  
             super.onActivityResult(requestCode, resultCode, data);  

              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  
                     {  





                     }  

 } }

MySum.java

 package com.example.mybuttonvalue;

 import android.app.Activity;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.Intent;

 import android.view.View;
 import android.widget.Button;

 public class MySum extends Activity
 {

    Activity activity;

    Context context;

    int value = getIntent().getIntExtra("key",0); // 0 is default vlaue

    public MySum(Activity activity,Context cont)
    {

        this.activity = activity;

        this.context = cont;

    }

    public void check(final int x)
    {



        final Dialog dia = new Dialog(context);

        dia.requestWindowFeature(dia.getWindow().FEATURE_NO_TITLE); 

        dia.setContentView(R.layout.check);

        Button btn = (Button) dia.findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) 
            {

                 int no = 12+x;

                 myvalue(no);

                 Intent intent= getIntent();  
                  intent.putExtra("result",x);  
                  setResult(2,intent);  

                 dia.dismiss();

            }
        });

        dia.show();



    }

    public String myvalue(int x)
    {

         return String.valueOf(x);

    }

}

日志报告

05-18 23:04:29.603: D/My Value :(10375): 0

这是上面的代码,我如何在日志中获得17。我应该将MySum类的结果传递给MainActivity类。

请告诉我,建议我一些好的解决方案。

1 个答案:

答案 0 :(得分:0)

您正在实例化一个错误的活动类public class MySum extends Activity

MySum my = new MySum(MainActivity.this,MainActivity.this);

删除构造函数和上面的代码。

您需要使用intent在活动之间传递值。要在MainActivity中获取值,请使用startActivityForResult并覆盖onActivityResult并使用intent获取值。

示例:

在MainActivity.java中

Intent intent = new Intent(MainActivity.this,MySum.class);
intent.putExtra("key",5);
startActivityForResult(intent,2); 

然后覆盖onActivityResult

 @Override  
   protected void onActivityResult(int requestCode, int resultCode, Intent data)  
   {  
             super.onActivityResult(requestCode, resultCode, data);  

              // check if the request code is same as what is passed  here it is 2  
               if(requestCode==2)  
                     {  
                       //get data using intent
                       int result = data.getIntextra("result",0);

                     }  

 } 

在MySum.java中

int value = getIntent().getIntExtra("key",0); // 0 is default vlaue

对值进行操作

然后返回结果

  Intent intent= getIntent();  
  intent.putExtra("result",x);  
  setResult(2,intent);  

编辑:

public class MySum extends Activity
{

 @Override
 protectes void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mysumlayout); //set layout for mysum
    int value = getIntent().getIntExtra("key",0);
    check(value);

}
public void check(int x)
{

    final Dialog dia = new Dialog(MySum.this);
    dia.requestWindowFeature(dia.getWindow().FEATURE_NO_TITLE); 
    dia.setContentView(R.layout.check);
    Button btn = (Button) dia.findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) 
        {

             int no = 12+x;
             dia.dismiss();
             Intent intent= getIntent();  
             intent.putExtra("result",no);  
             setResult(2,intent);  
             finish(); 


        }
    });

    dia.show();
} 
}

注意:

除了上面的代码,这只是一个例子,你根本不需要一个Activity。你所做的就是对一个不需要ui的int值进行计算。它可能是一个普通的java类,它可以在没有对话框或任何其他ui的情况下执行某些操作。