【问题标题】:Passing value between activity to fragment on android在活动之间传递值到android上的片段
【发布时间】:2014-01-10 11:27:08
【问题描述】:

关于活动:

@Override
 public void onTabSelected(Tab tab, FragmentTransaction ft) {
 // on tab selected
 // show respected fragment view
  Log.v("Test", "Menjalankan intent antar activity ke fragment");
  Bundle bundle=new Bundle();
  //String message= "From activity";
  int nilai=10;
  bundle.putInt("Nilai", nilai);
  Log.v("Testing", "Data yang akan dikirim "+nilai);
    //set Fragmentclass Arguments
  Lirik f=new Lirik();
  f.setArguments(bundle);

  viewPager.setCurrentItem(tab.getPosition());
 }

片段代码:

package com.example.egmim;

import com.example.support.dbAdapter;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;



public class Lirik extends Fragment{


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.lirik_view, container, false);

        Log.v("Testing", "Menjalankan proses pengambilan data dari activity");

        Bundle bundle = getArguments();
          if (bundle != null) {
              Log.v("Testing", "Data adalah ");
          }else{
              Log.v("Testing", "Data null");
          }



        //searchonDB();
        return rootView;
    }





}

当编译器说:第 25 行出现空异常时。(java.lang.nullexception) 第 25 行是

  int strtext=getArguments().getInt("Nilai", 0);

怎么了?

01-10 06:39:53.734: V/Testing(4097): Proses Intent dijalankan, nomor yang dipilih adalah 1

01-10 06:39:54.144: V/Test(4097): Menjalankan intent antar activity ke fragment

01-10 06:39:54.154: V/Testing(4097): Data yang akan dikirim 10

01-10 06:39:54.845: V/Testing(4097): Menjalankan proses pengambilan data dari activity

01-10 06:39:54.875: D/AndroidRuntime(4097): Shutting down VM

01-10 06:39:54.894: W/dalvikvm(4097): threadid=1: thread exiting with uncaught exception (group=0x41465700)

01-10 06:39:55.104: E/AndroidRuntime(4097): FATAL EXCEPTION: main

01-10 06:39:55.104: E/AndroidRuntime(4097): java.lang.NullPointerException

01-10 06:39:55.104: E/AndroidRuntime(4097):     at com.example.egmim.Lirik.onCreateView(Lirik.java:24)

01-10 06:39:55.104: E/AndroidRuntime(4097):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)

【问题讨论】:

  • 应该是int strtext=getArguments().getInt("nilai", 0);
  • 您将“nilai”作为密钥传递,但使用“Nilai”密钥提取这就是原因。
  • 传递了错误的key,应该是"nilai"
  • 修复后还是一样
  • 您似乎没有对您在此处创建的 Lirik 片段做任何事情。 onCreateView() 运行的实例可能是没有参数包的其他东西,因此 getArguments() 返回 null。

标签: java android android-fragments android-activity


【解决方案1】:

您的文字是:

int strtext=getArguments().getInt("Nilai", 0);

应该是:

int strtext=getArguments().getInt("nilai", 0);

编辑:

查看与您的问题相关的这个问题:

Here

【讨论】:

  • 谢谢,但我修好后问题还是一样
【解决方案2】:
    public class MyFragment extends Fragment {
        int strtext;

     @Override
    public void onCreate(Bundle savedInstanceState) 
          {
            super.onCreate(savedInstanceState);
            Bundle data = getArguments();
            strtext= data.getInt("Nilai");
          }

    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
      View rootView = inflater.inflate(R.layout.lirik_view, container, false);
      Log.v("Testing", "Menjalankan proses pengambilan data dari activity");

      Log.v("Testing", "Data adalah "+strtext);
      return rootView;
     }
    }       

【讨论】:

  • @user3181552:很抱歉我没能回答你的问题?
  • 我的意思是在活动课上代码是否正确?对不起我的英语
  • @user3181552:是的。它完全正确,给了我正确的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
相关资源
最近更新 更多