【问题标题】:Sending array with Intent to different package将带有 Intent 的数组发送到不同的包
【发布时间】:2013-09-04 22:05:47
【问题描述】:

我对数组的 Intent 有疑问。我想将一个矩形数组发送到另一个包。我正在关注this tutorial。不幸的是,我的 Intent 仍然存在问题。所以我有课程ActivityToSend。我想将storePrintIMC 发送到另一个包的另一个类(SamplePreferenceActivity)。

ActivityToSend类:

public class ActivityToSend extends Activity {
    private Activity activity;
    private ArrayList<String[]> data;
    private static LayoutInflater inflater = null;
    public String[] inkLevels = new String[5];
    View message;
    String [][] storePrintIMC= new String [4][4];
    public static final String ARRAYS_COUNT = "com.Status.App.ARRAYS_COUNT";
    public static final String ARRAY_INDEX = "com.Status.App.ARRAY_INDEX"; 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final String data[][] = storePrintIMC; 
        Bundle bundle = new Bundle();
        int count = data.length; 
        bundle.putInt(ARRAYS_COUNT, count); 
        for (int i = 0; i < count; i++)
        { 
            bundle.putStringArray(ARRAY_INDEX + i, data[i]); 
        } 
        Intent intent = new Intent(this, SamplePreferenceActivity.class); 
        intent.putExtras(bundle);

        startActivity(intent);
    }
}

对于我使用的不同包中的第二个活动:

public class SamplePreferenceActivity extends PreferenceActivity {    
    private static final int DIALOG_READ_ME = 1;
    public String[] inkLevels = new String[5];

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            int count = bundle.getInt(ActivityToSend.ARRAYS_COUNT, 0);

            ArrayList<String[]> arrays = new ArrayList<String[]>(count);

            for (int i = 0; i < count; i++)
                arrays.add(bundle.getStringArray(ActivityToSmartWatch.ARRAY_INDEX + i));

            String[][] data = arrays.toArray(new String[][]{});
        }
    }
}

我还对 Android 清单进行了一些更改。对于第二个包,我输入:

<activity android:name=".SamplePreferenceActivity " android:label="@string/preference_activity_title">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.PrinterStatus.AppLab.SamplePreferenceActivity " /> 
  - <intent-filter>
        <action android:name="android.intent.action.MAIN" /> 
    </intent-filter>
</activity>
<activity android:name="com.sonyericsson.extras.liveware.extension.controlsample.SamplePreferenceActivity" android:parentActivityName="com.PrinterStatus.AppLab.ActivityToSend" /> 
<service android:name="com.sonyericsson.extras.liveware.extension.controlsample.SampleExtensionService" /> 

我在以下位置的第一个包中收到错误:

Intent intent = new Intent(this, SamplePreferenceActivity.class);

我不知道我必须改变什么。你有什么想法吗?

【问题讨论】:

  • 错误是什么?你导入SamplePreferenceActivity了吗?
  • 我怎样才能导入它?是在android清单中还是在类中?当我上课时无法添加它
  • 你看到我的回答了吗?另外(如果您遇到编译器错误,这并不重要),您真的需要清单中的android:parentActivityName 属性吗?仅当您从 ActivityToSend 活动以外的其他地方开始 SamplePreferenceActivity 时才需要它。

标签: java android arrays android-intent


【解决方案1】:

由于SamplePreferenceActivity 在不同的包中,您需要将类导入ActivityToSend。它就像任何其他导入一样。从清单中的内容来看,您需要将其放在 com.PrinterStatus.AppLab.ActivityToSend.java 的顶部附近(与其他 import 语句一起):

import com.sonyericsson.extras.liveware.extension.controlsample.SamplePreferenceActivity;

如果您使用的是 Eclipse,您可能可以使用 ctrl-shift-O 自动解析导入。

【讨论】:

  • 是的,先生!一个为你的答案!,我把另一个包误读为另一个应用程序。对不起
  • 感谢您的回复。但是我仍然有问题。在 ActivityToSend 类中出现错误:构造函数 Bundle(ActivityToSend, Class) 未定义。
  • @Carlos - 我在您的原始帖子中没有看到该代码。你为什么要尝试构建一个像这样的Bundle?这些论点看起来应该是针对新的Intent,而不是新的Bundle
  • @TedHopp- Bundle 我用于意图。我从这个网站(anddev.org/view-layout-resource-problems-f27/…)参考你有没有其他的解决方案?
  • @Carlos - 使用 BundleIntent 没有问题。但是,它们必须正确构建。像这样的东西:Bundle b = new Bundle(); /* put stuff into b, then: */ Intent intent = new Intent(this, SamplePreferenceActivity.class); intent.putExtras(b); startActivity(intent);。请注意,Bundle 构造函数不接受任何参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
相关资源
最近更新 更多