我有活动A(具有Listview的自定义适配器),在“自定义适配器”的代码中,我想调用AlertDialog,它将显示第二个活动(活动B)。
我可以完美展示活动,但我想知道如何在活动A和活动B之间传递args?
CustomAdapter.java:
view_details.setClickable(true);
view_details.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
View promptView = layoutInflater.inflate(R.layout.activity_activity_B, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptView);
AlertDialog alertD = alertDialogBuilder.create();
alertD.show();
首先,我想只需将以下代码放在'alertD.show()'下面:
TextView title_ = (TextView) v.findViewById(R.id.title_B); // Activity B
title_.setText("Example");
但没有奏效。然后我想到了使用'Bundle'在活动之间传递args。所以,再次,在'alertD.show()'之后:
Intent i = new Intent(context, activityB.class);
i.putExtra("title", "this is the title"));
// And get this way in ActivityB:
// Bundle extras = getIntent().getExtras();
// String g = extras.getString("title");
也没用。 使用这最后一个代码我没有收到任何错误,但它也没有显示信息。使用“setText”,我收到一个NullPointerException的错误(就像,活动没有初始化,然后它检索错误。)
感谢。
答案 0 :(得分:0)
解决。
我对AlertDialog的观点是拥有那种窗口。我发现我们可以将这种类型的窗口(对话框)设置为我们的主题。因此,现在一切都变得更加容易和可能。
// styles.xml
<style name="MyTheme" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
<-------------->
// Manifest.xml
<activity
android:name="com.example.MyExample.activity_B"
android:label="@string/activity_B"
android:windowSoftInputMode="stateHidden"
android:theme="@style/MyTheme">
</activity>
然后我可以在我的自定义适配器中使用:
Intent i = new Intent(getContext(), activity_B.class);
i.putExtra("field", "value");
context.startActivity(i);
感谢。
答案 1 :(得分:0)
试试这个 -
String title1 = this is the title;
Intent i = new Intent(context, activityB.class);
i.putExtra("title", title1);
然后从您的新活动中提取它 -
Intent intent = getIntent();
String title1 = intent.getExtras.getString("title");