我不知道如何传递这个用户类对象。我只是尝试从第一个活动中存储的editText中获取输入,然后将其发送到另一个活动中的textView。我以前做过这件事,但出于某种原因,我在这里错了,我一直收到这样的错误“java.lang.RuntimeException:无法启动活动组件信息{example.com.avatar/example.com.avatar.DisplayActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)”。有人能帮我吗?
//1st Activity
findViewById(R.id.buttonSubmit).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DisplayActivity.class);
User user = new User();
textViewNameLocal = findViewById(R.id.textViewName);
intent.putExtra("USER", user);
startActivity(intent);
}
});
}
//2nd Activity
public class DisplayActivity extends AppCompatActivity {
TextView textViewName, textViewEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
textViewName = findViewById(R.id.textViewName); //this was the error, it needs to be below the "setContentView(R.layout.activity_display)".
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
Intent intent = getIntent();
User user = (User) intent.getSerializableExtra("USER");
textViewName.setText(user.getName().toString);
}
}
使用Serializable实现您的类。让我们假设这是您的实体类:
import java.io.Serializable;
@SuppressWarnings("serial") //With this annotation we are going to hide compiler warnings
public class User implements Serializable {
public User(double id, String name) {
this.id = id;
this.name = name;
}
public double getId() {
return id;
}
public void setId(double id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
private double id;
private String name;
}
我们正在将名为user的对象从X活动发送到Y活动。X活动中的某处;
User obj = new User(4,"Yuvi");
Intent i = new Intent(this, Y.class);
i.putExtra("sampleObject", obj);
startActivity(i);
在Y活动中,我们得到对象。
Intent i = getIntent();
User obj = (User)i.getSerializableExtra("sampleObject");
就是这样。
代码中的序列化没有问题。
您在以下位置收到错误:
textViewName.setText(user.getName());
因为变量textViewName为空。
仅在调用方法setContentView之后,才考虑使用findViewById为其分配引用
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
textViewName = findViewById(R.id.textViewName); //call after setContentView
Intent intent = getIntent();
User user = (User) intent.getSerializableExtra("USER");
textViewName.setText(user.getName());
我是Android开发的新手,当然还有碎片。 我想访问main activity中我的片段的控件,但是'find viewbyid'返回null。如果没有片断,代码可以正常工作。
我有一个返回< code>List的方法。现在我想知道如何正确放置< code>try/catch块。如果我将< code>return语句放在< code>try中,我会得到错误 并非所有代码路径都返回值 如果我放置在之后(就像我目前所做的那样),即使在之后,它也会返回。那么最好的方法应该是什么? 方法如下:
当我试图使用Facebook或Google登录Firebase时,我的应用程序崩溃了,因为它没有使用CreateNewUser()为Firebase创建新用户。 Logcat:- 05-10 09:11:58.180 16986-16986/com.example.sefi.authenticationprojectE/VideoAdapter: onCreateViewHolder() 登录ct
我一直在这里跟随这个教程: Android Studio-导入外部库/JAR
我在Java中有一个与MySQL连接的多类项目,我可以与这个SQL数据库建立连接,但当我试图将它读入数组时,它得到的是废话,而不是所请求的信息。我做错了什么? 它在sql定义下面出现了一条弯曲的线条,说它们从来没有被读取过,但我就是不明白为什么会这样!它构建得很好,可以看到数据库中有行,但它返回以下内容: 显示“java2assignment3.dvd@5e0010bc”和“java2assign
数字根是数字中所有数字的递归和。给定n,取n的位数之和。如果该值有两位数,则继续以这种方式递减,直到生成一个位数。这只适用于自然数。 正如您在上面看到的,我已经尝试通过测试“如果输出的值不等于1,则返回”的if fe语句返回个位数。但是,这个返回不起作用,而是从我放在下面以清除返回错误的返回中返回0。对这个问题有什么帮助吗?谢谢