在Android中,如何将按钮点击事件的值传递给另一个类?

在Android中,如何将按钮点击事件的值传递给另一个类?,android,function,button,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; impor

我试图在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)  
                     {  





                     }  

 } }
 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);

    }

}
MySum.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)  
                     {  





                     }  

 } }
 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类的结果


请让我知道,给我建议一些好的解决方案。

您正在实例化一个活动类
公共类MySum extensed Activity
,这是错误的

MySum my = new MySum(MainActivity.this,MainActivity.this);
删除构造函数和上面的代码

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

例如:

在MainActivity.java中

Intent intent = new Intent(MainActivity.this,MySum.class);
intent.putExtra("key",5);
startActivityForResult(intent,2); 
然后覆盖ActivityResult上的

 @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);  
编辑:

注:


除了上面的代码(这只是一个示例),您根本不需要任何活动。您所做的只是对不需要ui的int值进行一些计算。它可能是一个普通的java类,只执行一些操作,没有对话框或任何其他ui内容。

在MainActivity.java..ie
public static mysum
并在
Mysum
中引用此变量,如
MainActivity.Mysum
并为其赋值..此值在MainActivity中也可用..而且,您真的需要params中的上下文和活动吗?我想不是真的..它能被认为是@blackbelt的副本吗。投票结束。无论如何,我将通过编辑Gettin No Scope error on this Intent Intent=new Intent(MainActivity.this,MySum.this)完成我的回答;构造函数意图(MainActivity,MySum)是undefined@user2551103打字错误。很抱歉它的
MySum.class
。MySum必须在清单文件中声明没有朋友代码不起作用。。。正在MySum.java的第18行获取NullPointerException。。。。