【发布时间】:2020-05-21 18:10:43
【问题描述】:
我有活动(在其中调用函数),包含所有函数的 java 文件和使用相机扫描代码的活动。
当主 Activity 加载时,它会调用 generateTextView 函数,该函数使用 TextView 填充页面。所有这些都启用了 onClick。单击一个 TextView 时,它会启动相机活动以扫描条形码。如何将该条形码字符串发送回主活动,发送到启动相机活动的 TextView?我不断遇到空对象引用。
我需要在这些动态生成的 TextView 中的每一个中添加标签,然后在主要活动中将条形码数据发送回它。
布局文件
public class LayoutElements extends AppCompatActivity {
TextView tv;
public TextView textViewGenerate(final Context ct, String tag, Integer id) {
tv = new TextView(ct);
GradientDrawable gd = new GradientDrawable();
gd.setColor(0xFFFFFF);
gd.setCornerRadius(4);
gd.setStroke(1, 0xFF757575);
tv.setBackground(gd);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
1.0f
);
//lp.height = 50;
tv.setPadding(7, 9, 0, 0);
tv.setGravity(Gravity.START);
tv.setTextSize(22);
tv.setTag(tag);
tv.setId(id);
tv.setHint("Enter Module Serial Number");
//Click to launch camera
tv.setClickable(true);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Intent intent = new Intent(ct, MctCameraActivity.class);
Intent intent = new Intent(ct, MctCameraActivity.class);
startActivityForResult(intent, 1);
//ct.startActivity(intent);
//ToDo: finish receiving the data from the activityForResult
}
});
lp.setMargins(10, 0, 10, 0);
lp.setMarginStart(10);
lp.setMarginEnd(10);
tv.setLayoutParams(lp);
return tv;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == RESULT_OK && data != null) {
String returnResult = data.getStringExtra("result");
tv.setText(returnResult);
}
}
}
错误日志
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.rsscanner, PID: 16095
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4225)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at com.example.rsscanner.models.LayoutElements$1.onClick(LayoutElements.java:62)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
【问题讨论】:
-
不幸的是它没有。我在调用此类时从主活动中传入上下文,并在动态设置文本视图时将其用作参数。
标签: android android-intent android-activity startactivityforresult