【问题标题】:How to send data from adapter into activity in Android如何将数据从适配器发送到 Android 中的活动
【发布时间】:2017-05-25 17:30:31
【问题描述】:

我想将数据从 adapter 发送到 activity 但没有 startActivity
我在 adapter 中编写以下代码:

Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("sendDate", model.get(0).getLastSaleDate());

并在 activity 中编写以下代码:

bundle = getIntent().getExtras();

mainBoxOfficeDate.setText(bundle.getString("sendDate"));

告诉我这个错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
                                                                             at Activities.MainActivity.onCreate(MainActivity.java:53)
                                                                             at android.app.Activity.performCreate(Activity.java:6754)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787) 
                                                                             at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                             at android.os.Looper.loop(Looper.java:154) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:6247) 
                                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 

我该如何解决?

【问题讨论】:

  • 如何在没有 startActivity 的情况下进行活动? MainActivity 中是否有这个适配器(我的意思是从 MainActivity 调用适配器)?
  • @msh.nayan,我初始化适配器:boxOfficeAdapter = new BoxOfficeAdapter(context, model);你能帮帮我吗?
  • model.get(0).getLastSaleDate() 有数据值吗?
  • boxOfficeAdapter = new BoxOfficeAdapter(context, model);这个适配器是从 MainActivity 初始化的吗?
  • @Jeeva,谢谢我的朋友,我使用界面并修复了!将您的答案发送到其他帖子,我接受。塔恩克斯

标签: android android-adapter android-bundle


【解决方案1】:

使用界面:-

public interface IMethodCaller{
void yourDesiredMethod(String text);

}

单击按钮或任何操作项时调用接口:-

Button btn=(Button)convertView.findViewById(yourButtonId);

btn.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
    if(mContext instanceof IMethodCaller){
        ((IMethodCaller)mContext).yourDesiredMethod();
    }
}

});

希望这会有所帮助:-)

【讨论】:

    【解决方案2】:

    您使用 Intent 而不是 Bundle 发送值。所以在 Activity 中使用 Intent 接收数据

    Intent intent=this.getIntent();
    if(intent !=null)// to avoid the NullPointerException
     mainBoxOfficeDate.setText(intent.getStringExtra("sendDate"));
    

    【讨论】:

    • 谢谢我的朋友,在你的代码中没有显示错误,但在 textView 中没有设置任何文本!我该如何解决?
    • 在适配器中我展示了这个 model.get(0).getLastSaleDate());进入吐司并显示数据!但在活动中显示为空
    • 请帮帮我我的朋友,我真的需要这个帮助,拜托
    • 这样发送数据....Intent intent = new Intent(context, MainActivity.class); intent.putExtra("sendDate", model.get(0).getLastSaleDate()); context.startActivity(intent);
    • 这不是正确的解决方案@sasikumar。这将再次重新创建活动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2012-11-15
    相关资源
    最近更新 更多