- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定如何正确构造这个地 block ;当我尝试从我的 MainActivity
添加包裹的对象时,我返回了 null
。
发送 Intent
:
public void onClick(View v) {
Intent myIntent = new Intent(listaddactivity.this,
MainActivity.class);
myIntent.putExtra(
"custom_object",
new listControlObject(namefield.getText().toString(),
iterator, temperatureFrag.getCurrentTempType(), Integer
.valueOf(powerPercent.getText()
.toString()), Integer
.valueOf(frequencyField.getText()
.toString()),
temperatureFrag.temperaturenumberpicker
.getValue(), cycleFrag.startTimeField
.getCurrentHour(),
cycleFrag.startTimeField.getCurrentMinute(),
cycleFrag.cycleDatePicker.getDayOfMonth(),
cycleFrag.cycleDatePicker.getMonth(), Integer
.valueOf(cycleFrag.numberOfCyclesField
.getText().toString()))); // Optional
// parameters
startActivity(myIntent);
Log.d("LISTACTIVITY", "Intent successfully passed!");
iterator++;
}
});
}
接收 Activity
:
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
String TAG;
HomeFragment homeFragment;
cycleviewfragment cyclefragment;
SectionsPagerAdapter mSectionsPagerAdapter;
/**
* The {@linkCustomViewPager} that will host the section contents.
*/
CustomViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
homeFragment = new HomeFragment();
cyclefragment = new cycleviewfragment();
// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
// Set up theCustomViewPager with the sections adapter.
mViewPager = (CustomViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setPagingEnabled(false);
// When swiping between different sections, select the corresponding
// tab. We can also use ActionBar.Tab#select() to do this if we have
// a reference to the Tab.
mViewPager
.setOnPageChangeListener(new CustomViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
// For each of the sections in the app, add a tab to the action bar.
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
processNewIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
processNewIntent(intent);
}
private void processNewIntent(Intent intent) {
Log.v("TEST", "METHOD CALLED TEST");
if (intent.hasExtra("custom_object")) {
cyclefragment.a1.add((listControlObject) intent.getParcelableExtra("custom_object"));
cyclefragment.adapter.notifyDataSetChanged();
}
}
当我发送 intent
时,我是否错误地实现了 parcel?我的 processNewIntent
给我一个 NullPointerException
是有原因的吗?
我猜有一种特定的方法可以构建一个包裹并通过我没有正确实现的 Intent 传递它,但我找不到任何好的资源。
Logcat
:
03-24 01:13:30.846: E/Trace(7974): error opening trace file: No such file or directory (2)
03-24 01:13:44.374: E/AndroidRuntime(7974): FATAL EXCEPTION: main
03-24 01:13:44.374: E/AndroidRuntime(7974): java.lang.NullPointerException
03-24 01:13:44.374: E/AndroidRuntime(7974): at com.nanospark.upcdemo.listaddactivity$1.onClick(listaddactivity.java:72)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.view.View.performClick(View.java:4091)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.view.View$PerformClick.run(View.java:17072)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.os.Handler.handleCallback(Handler.java:615)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.os.Handler.dispatchMessage(Handler.java:92)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.os.Looper.loop(Looper.java:153)
03-24 01:13:44.374: E/AndroidRuntime(7974): at android.app.ActivityThread.main(ActivityThread.java:4987)
03-24 01:13:44.374: E/AndroidRuntime(7974): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 01:13:44.374: E/AndroidRuntime(7974): at java.lang.reflect.Method.invoke(Method.java:511)
03-24 01:13:44.374: E/AndroidRuntime(7974): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
03-24 01:13:44.374: E/AndroidRuntime(7974): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
03-24 01:13:44.374: E/AndroidRuntime(7974): at dalvik.system.NativeStart.main(Native Method)
谢谢你们。
编辑:
listaddactivity.java 的第 72 行:
myIntent.putExtra(
"custom_object",
new listControlObject(namefield.getText().toString(),
iterator, temperatureFrag.getCurrentTempType(), Integer
.valueOf(powerPercent.getText()
.toString()), Integer
.valueOf(frequencyField.getText()
.toString()),
temperatureFrag.temperaturenumberpicker
.getValue(), cycleFrag.startTimeField
.getCurrentHour(),
cycleFrag.startTimeField.getCurrentMinute(),
cycleFrag.cycleDatePicker.getDayOfMonth(),
cycleFrag.cycleDatePicker.getMonth(), Integer
.valueOf(cycleFrag.numberOfCyclesField
.getText().toString())));
上面只是构建了一个新对象,并将其添加到带有“自定义对象”键的 Intent 中。
这是可打包对象的代码:
package com.nanospark.upcdemo;
import android.os.Parcel;
import android.os.Parcelable;
public class listControlObject implements Parcelable {
private String name;
private int id;
private int tempType;// 0 for fahrenheit, 1 for celsius.
private int powerPercent;
private int freq;
private int temp;
private int cycleDateDay;
private int cycleDateMonth;
private int numberOfCycles;
private int cycleTimeHour;
private int cycleTimeMinute;
public listControlObject(String name, int id, int tempType,
int powerPercent, int freq, int temp, int cycleTimeHour,
int cycleTimeMinute, int cycleDateDay, int cycleDateMonth,
int numberOfCycles) {
this.id = id;
this.name = name;
this.cycleDateDay = cycleDateDay;
this.cycleDateMonth = cycleDateMonth;
this.cycleTimeHour = cycleTimeHour;
this.cycleTimeMinute = cycleTimeMinute;
this.freq = freq;
this.numberOfCycles = numberOfCycles;
this.powerPercent = powerPercent;
this.temp = temp;
this.tempType = tempType;
}
private listControlObject(Parcel in){
this.id = in.readInt();
this.name = in.readString();
this.cycleDateDay = in.readInt();
this.cycleDateMonth = in.readInt();
this.cycleTimeHour = in.readInt();
this.cycleTimeMinute = in.readInt();
this.freq = in.readInt();
this.numberOfCycles = in.readInt();
this.powerPercent = in.readInt();
this.temp = in.readInt();
this.tempType = in.readInt();
}
public int getCycleDateDay() {
return cycleDateDay;
}
public void setCycleDateDay(int cycleDateDay) {
this.cycleDateDay = cycleDateDay;
}
public int getCycleDateMonth() {
return cycleDateMonth;
}
public void setCycleDateMonth(int cycleDateMonth) {
this.cycleDateMonth = cycleDateMonth;
}
public int getCycleTimeHour() {
return cycleTimeHour;
}
public void setCycleTimeHour(int cycleTimeHour) {
this.cycleTimeHour = cycleTimeHour;
}
public int getCycleTimeMinute() {
return cycleTimeMinute;
}
public void setCycleTimeMinute(int cycleTimeMinute) {
this.cycleTimeMinute = cycleTimeMinute;
}
public int getNumberOfCycles() {
return numberOfCycles;
}
public void setNumberOfCycles(int numberOfCycles) {
this.numberOfCycles = numberOfCycles;
}
public int getTempType() {
return tempType;
}
public void setTempType(int tempType) {
this.tempType = tempType;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPowerPercent() {
return powerPercent;
}
public void setPowerPercent(int powerPercent) {
this.powerPercent = powerPercent;
}
public int getFreq() {
return freq;
}
public void setFreq(int freq) {
this.freq = freq;
}
public int getTemp() {
return temp;
}
public void setTemp(int temp) {
this.temp = temp;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return this.name;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(id);
parcel.writeString(name);
parcel.writeInt(cycleDateDay);
parcel.writeInt(cycleDateMonth);
parcel.writeInt(cycleTimeHour);
parcel.writeInt(cycleTimeMinute);
parcel.writeInt(freq);
parcel.writeInt(numberOfCycles);
parcel.writeInt(powerPercent);
parcel.writeInt(temp);
parcel.writeInt(tempType);
}
public static Creator<listControlObject> CREATOR = new Creator<listControlObject>() {
public listControlObject createFromParcel(Parcel parcel) {
return new listControlObject(parcel);
}
public listControlObject[] newArray(int size) {
return new listControlObject[size];
}
};
}
编辑:
我发现了错误的根源:
当我需要传递一个listControlObject时,我在这里传递一个包裹。
cyclefragment.a1.add(intent.getParcelableExtra("custom_object"));
cyclefragment.adapter.notifyDataSetChanged();
如何将 intent.getParcelableExtra("custom_object") 转换回 listControlObject?
[更新]
新的 Logcat 错误:
03-24 02:29:46.177: E/AndroidRuntime(9685): FATAL EXCEPTION: main
03-24 02:29:46.177: E/AndroidRuntime(9685): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nanospark.upcdemo/com.nanospark.upcdemo.MainActivity}: java.lang.NullPointerException
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread.access$600(ActivityThread.java:149)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.os.Handler.dispatchMessage(Handler.java:99)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.os.Looper.loop(Looper.java:153)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread.main(ActivityThread.java:4987)
03-24 02:29:46.177: E/AndroidRuntime(9685): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 02:29:46.177: E/AndroidRuntime(9685): at java.lang.reflect.Method.invoke(Method.java:511)
03-24 02:29:46.177: E/AndroidRuntime(9685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
03-24 02:29:46.177: E/AndroidRuntime(9685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
03-24 02:29:46.177: E/AndroidRuntime(9685): at dalvik.system.NativeStart.main(Native Method)
03-24 02:29:46.177: E/AndroidRuntime(9685): Caused by: java.lang.NullPointerException
03-24 02:29:46.177: E/AndroidRuntime(9685): at com.nanospark.upcdemo.MainActivity.processNewIntent(MainActivity.java:88)
03-24 02:29:46.177: E/AndroidRuntime(9685): at com.nanospark.upcdemo.MainActivity.onCreate(MainActivity.java:70)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.Activity.performCreate(Activity.java:5020)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-24 02:29:46.177: E/AndroidRuntime(9685): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
03-24 02:29:46.177: E/AndroidRuntime(9685): ... 11 more
相关代码:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
processNewIntent(intent);
}
private void processNewIntent(Intent intent) {
Log.v("TEST", "METHOD CALLED TEST");
if (intent.hasExtra("custom_object")) {
if (intent.getParcelableExtra("custom_object")
.equals(null)) {
Log.v("Testing null", "Object is null");
} else {
Log.v("Testing null", "Object is not null");
cyclefragment.a1.add((listControlObject) intent.getParcelableExtra("custom_object"));
cyclefragment.adapter.notifyDataSetChanged();
}
}
}
logcat 错误指的是这一行:
cyclefragment.a1.add((listControlObject) intent.getParcelableExtra("custom_object"));
我做的
private listControlObject(Parcel in){
public listControlObject(Parcel in){
根据评论的要求。仍然收到错误。
最佳答案
您的跟踪文件似乎已损坏或被另一个进程占用。 Logcat 可能在线出错:Log.d("LISTACTIVITY", "Intent successfully passed!");
或者您检查 Activity 中的所有 namefield
或 temperatureFrag
...,以确保在调用发送 Activity 的 onClick() 之前它们的实例都已初始化。
因为您在一行代码中调用了所有实例,所以很难找出错误。尝试使用 DDMS 进行调试!
P/S:您的代码中第 72 行在哪里?
[更新]
更多详情: Passing a custom Object from one Activity to another Parcelable vs Bundle
如果您已经很好地“包裹”了,在您的目标 Activity 中,只需将您收到的对象转换为原始类型,就像您在代码中所做的那样。
你的代码错误是private listControlObject(Parcel in)
with private
。更改为 public
以便 Intent 可以使用此构造函数从先前打包的字符串中恢复对象。
关于android - 我传递的包裹是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602187/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!