我使用的是導航抽屜有三個項目(考勤表,索賠,項目),我想通過ab
權利要求。在考勤表我有3個活動中,ab
在work_details activity.How能做些什麼來實現這一目標?如何將數據傳遞給導航抽屜項目?
的TimeSheet有3個活動(信息(擴展到片段),工作力,工作詳情)
要求有2個活動(權利要求書(延伸到片段),cameraMain)。
WorkDetails.java
Button btn1 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
AlertDialog.Builder builder = new AlertDialog.Builder(WorkDetailsTable.this);
builder.setTitle("Data Saved");
builder.setMessage("Are you sure you want to save?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int ii) {
long ab = ts.insertTimeSheet(name, weather, date, status,b,i);
Bundle bundle =new Bundle();
bundle.putString("ab","ab");
Claims o=new Claims();
o.setArguments(bundle);
}
Claims.java
final Long fk=this.getArguments().getLong("ab");
Button button = (Button) claims.findViewById(R.id.button8);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent(getActivity().getApplicationContext(), CameraMain.class);
Toast.makeText(getActivity().getApplicationContext(), fk+"", Toast.LENGTH_LONG).show();
startActivity(intent);
}
});
return claims;
}
我從Send data from activity to fragment in android參考,但是當我選擇的權利要求項的應用程序崩潰。
9月11日至2日:25:55.910 6116-6116/com.example.project.project E/AndroidRuntime:致命異常:主 工藝:com.example.project.project,PID:6116 的java .lang.NullPointerException at com.example.project.project.Claims.onCreateView(Claims.java:59) at android.app.Fragment.performCreateView(Fragment.java:1700) at android.app.FragmentManagerImpl.moveToState( FragmentManager.java:890) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) at android.app.BackStackRecord.run(BackStackRecord.java:684) 在android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1453)
我覺得NullPointException從這裏走來
FK = data.getLong( 「AB」);
我是否需要添加參數在MainActivity?
MainActivity.java
代碼段在mainActivity
private void selectItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment=new Information();
break;
case 1:
fragment=new Claims();
break;
case 2:
fragment=new Project();
case 3:
fragment=new Report();
case 4:
fragment=new ViewView();
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
Log.e("MainActivity", "Error in creating fragment");
}
一些部分EDITED
Button btn1 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
AlertDialog.Builder builder = new AlertDialog.Builder(WorkDetailsTable.this);
builder.setTitle("Data Saved");
builder.setMessage("Are you sure you want to save?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int ii) {
long ab = ts.insertTimeSheet(name, weather, date, status,b,i);
Bundle bundle =new Bundle();
bundle.putLong("ab",ab);
Claims o=new Claims();
o.setArguments(bundle);
}
權利要求。的java
Bundle bundle=this.getArguments();
fk=bundle.getLong("ab");
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity().getApplicationContext(), fk+"", Toast.LENGTH_LONG).show();
AlertDialogRadio(a1);
}
});
MainActivity
private void selectItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment=new Information();
break;
case 1:
fragment=new Claims();
break;
case 2:
fragment=new Project();
break;
case 3:
fragment=new Report();
break;
case 4:
fragment=new ViewView();
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
if(fragment instanceof Claims)
{
Bundle bundle=new Bundle();
bundle.putString("ab","ab");
fragment.setArguments(bundle);
fragment.setArguments(bundle);
}
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(mNavigationDrawerItemTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
Log.e("MainActivity", "Error in creating fragment");
}
}
}
在WorkDetails'索賠fragobj =新的索賠();'會發生什麼呢?您似乎將參數設置在您不使用的對象上。嘗試設置來自Activity的參數,因爲這似乎是您添加片段的位置。 –
'我需要在MainActivity中添加參數嗎?' 是的,如果那是您創建片段並將其添加到片段管理器的地方。 –
@MarkusMaga hi..sorry,我不明白。我應該在'MainActivity'中寫入什麼,以便'ab'可以傳遞給'Claims.java'?在fragment = new Claims()之後的 – Hoo