Android AlertDialog如何传递args

时间:2013-10-08 09:47:02

标签: java android alertdialog args

我有活动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的错误(就像,活动没有初始化,然后它检索错误。)

感谢。

2 个答案:

答案 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");