Android list 问题

标签 android

我编写了一段代码,允许用户在单击 ListView 中的项目时转到另一个 Activity 。但是发生了错误。模拟器询问我是否在 android-manifest 中添加了新的 Activity!。
我已经做到了。
我应该做什么?

这是完整的堆栈跟踪。

07-24 12:20:35.263: E/AndroidRuntime(455): FATAL EXCEPTION: main
07-24 12:20:35.263: E/AndroidRuntime(455): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.tstnetconnwithjson/com.example.tstnetconnwithjson.tables.full}; have you declared this activity in your AndroidManifest.xml?
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.app.Activity.startActivityForResult(Activity.java:2817)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.app.Activity.startActivity(Activity.java:2923)
07-24 12:20:35.263: E/AndroidRuntime(455):  at com.example.tstnetconnwithjson.MainActivity$conn$1.onItemClick(MainActivity.java:195)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.widget.ListView.performItemClick(ListView.java:3382)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.os.Handler.handleCallback(Handler.java:587)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.os.Looper.loop(Looper.java:123)
07-24 12:20:35.263: E/AndroidRuntime(455):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-24 12:20:35.263: E/AndroidRuntime(455):  at java.lang.reflect.Method.invokeNative(Native Method)
07-24 12:20:35.263: E/AndroidRuntime(455):  at java.lang.reflect.Method.invoke(Method.java:521)
07-24 12:20:35.263: E/AndroidRuntime(455):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-24 12:20:35.263: E/AndroidRuntime(455):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-24 12:20:35.263: E/AndroidRuntime(455):  at dalvik.system.NativeStart.main(Native Method)

这是 maifest 文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tstnetconnwithjson"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="full"></activity>
    </application>

</manifest>

这是我调用启动 Activity 的代码:

import java.util.ArrayList;
import java.util.Collection;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.DefaultClientConnection;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;


import com.example.tstnetconnwithjson.tables.custome;
import com.example.tstnetconnwithjson.tables.videos;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {



    Button search; ; 
    TextView name ; 
    ListView listview ; 
    ArrayList<videos > videolist; 
    ArrayAdapter< videos > adapter ; 
    AlertDialog.Builder alert ; 
    ProgressDialog progressdialog ; 
    EditText name;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        videolist = new ArrayList<videos>(); 
        adapter = new ArrayAdapter<videos>(this, android.R.layout.simple_list_item_1 , android.R.id.text1,videolist); 
        name=(EditText) findViewById(R.id.editText1);
        alert = new Builder(this); 
        alert.setTitle("Warnning" ) ; 
        alert.setMessage("You want to connect to the internet ..? " ); 


        alert.setNegativeButton("No ", null); 
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface arg0, int arg1) {
                String username=name.getText().toString();
                            new connection().execute("https://gdata.youtube.com/feeds/api/videos?author="+username+"&v=2&alt=jsonc");   

            }
        });



        progressdialog = new ProgressDialog(this); 

        progressdialog.setMessage("Wait Loading .... "); 
        progressdialog.setCancelable(false); 





        search = (Button) findViewById(R.id.button1); 
        name = (TextView) findViewById(R.id.textView1); 

        listview = (ListView) findViewById(R.id.listView1); 

        listview.setAdapter(adapter); 


        search.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
            alert.show();   


            }
        });
    }

    class connection extends AsyncTask<String, Integer, String>{


        @Override
        protected void onPreExecute() {
             progressdialog.show(); 
            super.onPreExecute();
        }
        @Override
        protected String doInBackground(String... arg0) {

            String s = GetUrlBody(arg0[0]); 




            return s;
        }

        @Override
        protected void onPostExecute(String result) {

        try{

            JSONObject jo =(JSONObject) new JSONTokener(result).nextValue();

        JSONObject feed = jo.optJSONObject("data");
        JSONArray entry = feed.optJSONArray("items");


        for(int i = 0 ; i<entry.length() ; i++){

        String title = entry.getJSONObject(i).getString("title");

        String thumbURL = entry.getJSONObject(i).getJSONObject("thumbnail").getString("sqDefault");
        Log.d("after get image", "ok")
        String   url;
        try {
            url = entry.getJSONObject(i).getJSONObject("player").getString("mobile");
        } catch (JSONException ignore) {
            url = entry.getJSONObject(i).getJSONObject("player").getString("default");
        }

        String description = entry.getJSONObject(i).getString("description");
        Log.d("after get description", "ok");
        videos videoobject=new videos();
        videoobject.setDecscrption(description);
        videoobject.setImageurl(thumbURL);
        videoobject.setVediourl(url);
        videoobject.setVideoname(title);

        videolist.add(videoobject);
        }
        listview.setAdapter(new custome(MainActivity.this,videolist));
        Log.d("AFTER set custome ", "before notify changes");


        adapter.notifyDataSetChanged(); 

lview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                videos vobject=(videos)arg0.getItemAtPosition(arg2);

                Intent intent = new Intent(getApplicationContext(),full.class);

                 intent.putExtra("title" ,vobject.getVideoname() );



                 intent.putExtra("description" ,vobject.getDecscrption() );
                 intent.putExtra("imageURL" ,vobject.getImageurl() );
                 intent.putExtra("videoURL" ,vobject.getVediourl() );
                 startActivity(intent);

            }
        });


        }catch(Exception exception) {
            Log.d("exception ", "nock nock nock....");
            Log.e("json ", exception.getMessage()); 
        }

            progressdialog.dismiss(); 
            super.onPostExecute(result); 

        } 




        String GetUrlBody (String Url ){

            HttpClient client = new DefaultHttpClient(); 

            HttpGet gethttp = new HttpGet(Url); 

            try{
            HttpResponse response = client.execute(gethttp); 

            if(response.getStatusLine().getStatusCode() == 200){

                String save =
            EntityUtils.toString(response.getEntity(), HTTP.UTF_8); 

                return save; 

            }else {
                return "Not Found"; 
            }

            }catch(Exception exception){}




            return null; 
        }



    }


}

最佳答案

首先要注意的是: 1. 不要以如下方式启动新 Activity:

Intent intent = new Intent(getApplicationContext(),full.class);

而是:

Intent intent = new Intent(MainActivity.this, full.class);

2.您的代码甚至无法编译,因为您有两个具有相同命名的类成员: name (一个 EditText 和一个 TextView)。那么你就缺少冒号。

然后,确保full确实存在并且在 Manifest 中是正确的。 (这到底是什么类名?合法,但是 Java 的类名惯例约定应该以大写字母开头)。就像(@Sanath 的回答): <activity android:name=".tables.full"/><activity android:name="com.example.tstnetconnwithjson.tables.full"/> .

然后,即使这没有帮助,也可能是由于您的 private libraries are not exported in Eclipse 。但如果你的full Activity 从兼容性包扩展FragmentActivity

这些是导致您的问题的可能原因。至少是我能想到的并且非常熟悉的。

关于Android list 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834316/

相关文章:

android - 如何让 Android 翻译 boolean 值?

android - 为 Android 构建 OpenSSL

java - 使用触摸事件移动 View

java - Android:我怎么知道CSS注入(inject)完成了?

Android 蓝牙 SCO 与日产汽车 radio

android - flutter 错误 : SafetyNet Attestation fails basic integrity

java - 诊断 "RuntimeException: Unable to start activity Caused by: java.lang.NullPointerException"

android - 使用 Gradle 的外部 Android 库项目

Android:与 OpenGL 渲染器线程同步

java - 如何烘烤验证错误消息显示未选择微调器中的任何项目?