【问题标题】:Activity switching not working android活动切换不起作用android
【发布时间】:2012-02-29 18:21:31
【问题描述】:

我正在开发一个有两个活动的 android 应用程序。一个是菜单屏幕,另一个是用户做出选择后实际使用的屏幕。第二个活动在工作线程中完成所有处理。当我选择继续进行第二个活动时,它会“闪烁”该活动约 100 毫秒。我发现了一些日志,如果我知道它们的意思,它们会告诉我需要修复什么。

02-29 10:52:33.850: I/ActivityManager(1255): Starting activity: Intent { cmp=com.wcf.imageShare/.ImageShareActivity }
02-29 10:52:33.920: W/InputManagerService(1255): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@45c0a198 (uid=10097 pid=24918)
02-29 10:52:33.936: W/WindowManager(1255): No window to dispatch pointer action
02-29 10:52:33.952: I/ActivityManager(1255): Displayed activity com.wcf.imageShare/.ImageShareActivity: 96 ms (total 96 ms)
02-29 10:52:34.000: W/WindowManager(1255): No window to dispatch pointer action 1

程序本身并没有崩溃,它只是将我带回菜单视图并再次显示我的选择。这是我用来切换活动的代码

lstServers.setOnItemClickListener(new OnItemClickListener()
    {
        public  void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            Beacon.activeServer = position;
            Intent uploadIntent = new Intent(inst,ImageShareActivity.class);
            inst.startActivity(uploadIntent);
        }
    });

inst 保存代码正在运行的活动的“this”变量,因为我无法使用“this”引用它

这是我尝试切换到的活动的 onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try
    {
        progBar = (ProgressBar)findViewById(R.id.progressbar_Horizontal);
        tv = (TextView)findViewById(R.id.prog_txt);
        btnCancel = (Button)findViewById(R.id.cancel);
        btnCancel.setOnClickListener(new OnClickListener()
        {
            public void onClick(View arg0) 
            {
                try {
                    uploaderThread.interrupt();
                    Uploader.CancelUpload();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        uploaderThread.start();
    }
    catch(Exception e)
    {
        Log.d("Uploader ERROR",e.getMessage());
    }
}

最后是清单文件中与这两个活动有关的部分。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" android:debuggable="true">
        <activity
        android:name=".ImageShareActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        </activity>
        <activity android:name=".ServerChoiceActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <data android:mimeType="image/*"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
    </application>

有没有人有任何建议或知道我缺少的东西?

谢谢

尼克·朗

【问题讨论】:

    标签: java android multithreading android-activity


    【解决方案1】:

    把这个改成这个:

    lstServers.setOnItemClickListener(new OnItemClickListener()
        {
            public  void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Beacon.activeServer = position;
                Intent uploadIntent = new Intent(your_current_activty.this,ImageShareActivity.class);
                uploadIntent.startActivity();
            }
        });
    

    【讨论】:

    • 请解释为什么-1.他的人是谁?
    • 那行不通。当我尝试它不会编译时。在这种情况下,“this”变量引用了我的 OnItemClickListener,因此 uploadIntent 的声明不会编译。然后,当我将 inst.startActivity(uploadIntent) 更改为 uploadIntent.startActivity() 时,它说该方法未定义。
    • @nick 我修改了我的答案。请尝试一下。用你的活动名称代替 your_current_activity
    • 我发现我无法显示活动超过 0.1 秒的原因是我没有为我的活动设置操作或附加内容。我需要使用 uploadIntent.setActivity() 方法,并且我还将当前意图中的额外内容复制到新意图中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2015-02-20
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多