Java 在android上将活动之间的值传递给片段
关于活动:Java 在android上将活动之间的值传递给片段,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,关于活动: @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= "Fr
@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;
}
}
片段代码:
@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);
应该是:
int strtext=getArguments().getInt("nilai", 0);
编辑:
检查与您的问题相关的问题:
它应该是
int strtext=getArguments().getInt(“nilai”,0)代码>您将“nilai”作为键传递,但使用“nilai”键提取,这就是原因。传递了错误的键,修复后“nilai”应保持不变。您似乎没有对此处创建的Lirik
片段做任何操作。运行的实例onCreateView()
可能是没有参数包的其他实例,因此getArguments()
返回null。谢谢,但在我修复它之后,问题仍然存在same@user3181552:很抱歉,我无法回答您的问题?我的意思是在活动类中,代码是否正确?为我的错误道歉english@user3181552:是的,它完全正确,给了我正确的结果。