获得空指针异常试图从C片段填充列表视图,以B片段时, [英] Getting Null pointer Exception when trying to populate listview from fragment C to fragment B
问题描述
我是新手,Android的发展。我需要从C片段在微调由用户选择的值填充的ListView在B片段。
到目前为止,我的尝试是捆绑的方法,但它的投掷空指针异常。
我真的很困惑,为什么出现这种情况。
这是我的code:
<一个href=\"http://stackoverflow.com/questions/33673001/how-to-pass-spinner-value-from-one-fragment-to-another?noredirect=1#comment55120435_33673001\">How从一个片段传递微调值到另一个?。
我将非常高兴,如果有人可以帮助我的什么是同一活动的片段之间沟通的过程
这是我的from_fragment(片段C)
包com.example.first.servicefirst;
进口android.app.Fragment;
进口android.content.Context;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.Spinner;公共类NewRequirements扩展片段{//公共静态的newInstance NewRequirements(束束){//添加myFragment =新的Add();
// myFragment.setArguments(包);
//}
FragmentMigration framgnetmigration;
//}@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
// TODO自动生成方法存根
查看查看= inflater.inflate(R.layout.fragment_dialog_claim,集装箱,
假);
按钮btnupdate;
btnupdate =(按钮)view.findViewById(R.id.update);
最后的微调SBU =(微调)view.findViewById(R.id.sbuu);
ArrayAdapter&LT;&CharSequence的GT; adaptersbu = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adaptersbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbu.setAdapter(adaptersbu);
最后的微调BU =(微调)view.findViewById(R.id.bu); adapterbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bu.setAdapter(adapterbu);
最后的微调SBUU =(微调)view.findViewById(R.id.sbu); adaptersbuu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbuu.setAdapter(adaptersbuu);
最后的微调SC =(微调)view.findViewById(R.id.sc);
;
adaptersc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sc.setAdapter(adaptersc);
最后的微调SSC =(微调)view.findViewById(R.id.ssc);
ArrayAdapter&LT;&CharSequence的GT; adapterssc = ArrayAdapter.createFromResource
(getActivity()getBaseContext(),R.array.newrequirements,R.layout.spinnerlayout);
adapterssc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ssc.setAdapter(adapterssc);
。最终的字符串str = sbu.getSelectedItem()的toString(); btnupdate.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
束束=新包();
FragmentManager FM = getFragmentManager();
添加附加=新的Add(); bundle.putString(是,STR);
// Log.i(捆绑,bundle.toString());
Log.v(添加,STR);
add.setArguments(包);
FragmentTransaction英尺= fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.content_frame,添加HI);
ft.addToBackStack(NULL);
ft.commit(); }
});
返回视图。
}}
}
这是我的to_fragment(片段B):
包com.example.first.servicefirst;进口android.app.Fragment;
进口android.app.FragmentTransaction;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.ListView;
进口android.widget.Spinner;
进口android.widget.TextView;进口的java.util.ArrayList;
公共类添加扩展片段实现View.OnClickListener
{
公共静态的Add()
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){ 查看rootView = inflater.inflate(R.layout.activity_btn_add,集装箱,FALSE);
微调ldsource =(微调)rootView.findViewById(R.id.lead_source);
ArrayAdapter&LT;&CharSequence的GT;适配器= ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox1,R.layout.spinnerlayout);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldsource.setAdapter(适配器);
// EDITTEXT的EditText =(EditText上)rootView.findViewById(R.id.title); 微调ldtype =(微调)rootView.findViewById(R.id.ldtype);
ArrayAdapter&LT;&CharSequence的GT;适配器1 = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox2,R.layout.spinnerlayout); adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldtype.setAdapter(适配器1);
微调ldstatus =(微调)rootView.findViewById(R.id.ldstatus);
TextView的TXT =(TextView中)rootView.findViewById(R.id.spinnerTarget);
ArrayAdapter&LT;&CharSequence的GT;适配器2 = ArrayAdapter.createFromResource(
。getActivity()getBaseContext(),R.array.dropbox3,R.layout.spinnerlayout); adapter2.setDropDownViewResource(android.R.layout.simple_selectable_list_item);
ldstatus.setAdapter(适配器2);
//捆绑包= getArguments();
//串好= bundle.getString(SBU);
ArrayList的&LT; LdNewsItem&GT; listContact = GetlistContact();
最终的ListView LV =(ListView控件)rootView.findViewById(R.id.ldrequirements);
lv.setAdapter(新customListAdapterldrequirements(getActivity(),listContact));
// lv.setOnTouchListener(新View.OnTouchListener(){
// @覆盖
//公共布尔onTouch(视图V,MotionEvent事件){
//返回false;
//} //通过触摸监听器设置用于处理内部滚动型触摸
//});
返回rootView;
}
私人的ArrayList&LT; LdNewsItem&GT; GetlistContact()
{ ArrayList的&LT; LdNewsItem&GT; contactlist =新的ArrayList&LT;&GT;();
LdNewsItem接触=新LdNewsItem();
字符串瑜珈= getArguments()的getString(是)。 的for(int i = 1; I&LT; = 10;我++)
{
//接触=新LdNewsItem();
contact.setSbu(+瑜珈);
// contact.setBu(+ STR);
// contact.setSbuu(Yogeswaran+ STR);
contact.setSc(销售+ I);
contact.setSsc(术语+ I);
contact.setReq(业务+ I);
contactlist.add(接触);
} 返回contactlist;
}
@覆盖
公共无效onActivityCreated(捆绑savedInstanceState){
super.onActivityCreated(savedInstanceState); 片段片段= NULL; 按钮btnrequirements =(按钮)getActivity()findViewById(R.id.btnrequirements)。
btnrequirements.setOnClickListener(本);}
@覆盖公共无效的onClick(视图v){
开关(v.getId()){
案例R.id.btnrequirements:
片段newFragment =新NewRequirements();
//考虑使用Java编码约定(上部第一个字符类的名字!)
FragmentTransaction交易= getFragmentManager()调用BeginTransaction()。
FragmentTransaction英尺= getActivity()
。.getFragmentManager()的BeginTransaction(); //替换无论是在fragment_container认为这个片段,
//和事务添加到后退堆栈
transaction.replace(R.id.content_frame,newFragment);
transaction.addToBackStack(NULL); //提交事务
器transaction.commit(); }
}}
引用字符串,而把参数 args.putString(青奥会,神)要传递;
应该是相同的,而你是retriving它 =瑜珈getArguments()的getString(青奥会);
I am newbie to android development. I need to populate ListView in fragment B from the value selected by user in the spinner from fragment C.
So far what I tried is bundle method but its throwing null pointer exception.
Really I am confused why this happen.
This is my code :
How to pass spinner value from one fragment to another?.
I would be very glad if someone helps me what is the procedure to communicate between fragments of same activity .
This is my from_fragment(fragment c)
package com.example.first.servicefirst;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class NewRequirements extends Fragment {
//public static NewRequirements newInstance(Bundle bundle) {
// Add myFragment = new Add();
// myFragment.setArguments(bundle);
//}
FragmentMigration framgnetmigration;
// }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_dialog_claim, container,
false);
Button btnupdate;
btnupdate=(Button)view.findViewById(R.id.update);
final Spinner sbu=(Spinner)view.findViewById(R.id.sbuu);
ArrayAdapter<CharSequence>adaptersbu=ArrayAdapter.createFromResource(
getActivity().getBaseContext(),R.array.newrequirements, R.layout.spinnerlayout);
adaptersbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbu.setAdapter(adaptersbu);
final Spinner bu=(Spinner)view.findViewById(R.id.bu);
adapterbu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bu.setAdapter(adapterbu);
final Spinner sbuu=(Spinner)view.findViewById(R.id.sbu);
adaptersbuu.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sbuu.setAdapter(adaptersbuu);
final Spinner sc=(Spinner)view.findViewById(R.id.sc);
;
adaptersc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sc.setAdapter(adaptersc);
final Spinner ssc=(Spinner)view.findViewById(R.id.ssc);
ArrayAdapter<CharSequence>adapterssc=ArrayAdapter.createFromResource
( getActivity().getBaseContext(), R.array.newrequirements, R.layout.spinnerlayout);
adapterssc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ssc.setAdapter(adapterssc);
final String str=sbu.getSelectedItem().toString();
btnupdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle bundle = new Bundle();
FragmentManager fm=getFragmentManager();
Add add = new Add();
bundle.putString("yes", str);
// Log.i("Bundle", bundle.toString());
Log.v("Add", str);
add.setArguments(bundle);
FragmentTransaction ft=fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.content_frame, add,"hi");
ft.addToBackStack(null);
ft.commit();
}
});
return view;
}
}
}
This is my to_fragment(Fragment B):
package com.example.first.servicefirst;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import java.util.ArrayList;
public class Add extends Fragment implements View.OnClickListener
{
public static Add()
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_btn_add, container, false);
Spinner ldsource=(Spinner)rootView.findViewById(R.id.lead_source);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
getActivity().getBaseContext(), R.array.dropbox1, R.layout.spinnerlayout);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldsource.setAdapter(adapter);
// EditText editText=(EditText)rootView.findViewById(R.id.title);
Spinner ldtype=(Spinner)rootView.findViewById(R.id.ldtype);
ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
getActivity().getBaseContext(), R.array.dropbox2,R.layout.spinnerlayout);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ldtype.setAdapter(adapter1);
Spinner ldstatus=(Spinner)rootView.findViewById(R.id.ldstatus);
TextView txt=(TextView)rootView.findViewById(R.id.spinnerTarget);
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
getActivity().getBaseContext(), R.array.dropbox3, R.layout.spinnerlayout);
adapter2.setDropDownViewResource(android.R.layout.simple_selectable_list_item);
ldstatus.setAdapter(adapter2);
// Bundle bundle=getArguments();
// String good=bundle.getString("sbu");
ArrayList<LdNewsItem> listContact = GetlistContact();
final ListView lv = (ListView)rootView.findViewById(R.id.ldrequirements);
lv.setAdapter(new customListAdapterldrequirements(getActivity(), listContact));
// lv.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// return false;
// }
// Setting on Touch Listener for handling the touch inside ScrollView
//});
return rootView;
}
private ArrayList<LdNewsItem> GetlistContact()
{
ArrayList<LdNewsItem> contactlist = new ArrayList<>();
LdNewsItem contact = new LdNewsItem();
String yog=getArguments().getString("yes");
for(int i=1;i<=10;i++)
{
// contact = new LdNewsItem( );
contact.setSbu(""+yog);
// contact.setBu(""+str);
// contact.setSbuu("Yogeswaran" + str);
contact.setSc("Sales" + i);
contact.setSsc("term" + i);
contact.setReq("business"+i);
contactlist.add(contact);
}
return contactlist;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Fragment fragment=null;
Button btnrequirements=(Button)getActivity().findViewById(R.id.btnrequirements);
btnrequirements.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnrequirements:
Fragment newFragment = new NewRequirements();
// consider using Java coding conventions (upper first char class names!!!)
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentTransaction ft = getActivity()
.getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.content_frame, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
}
}
}
The reference String that you are passing while putting the argument args.putString("yog",god);
should be the same while you are retriving it yog=getArguments().getString("yog");
这篇关于获得空指针异常试图从C片段填充列表视图,以B片段时,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!