在Android中,如何将按钮点击事件的值传递给另一个类?
我试图在Android中编写一个代码,将一个值从一个按钮点击传递到另一个类。我在日志中得到0值,我没有找到任何技术来发送正确的值 请填写我的以下代码: Java代码: MainActivity.java在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
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..iepublic 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。。。。