Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法对我的Android应用程序使用putExtra()和getExtras()_Java_Android_Android Intent - Fatal编程技术网

Java 无法对我的Android应用程序使用putExtra()和getExtras()

Java 无法对我的Android应用程序使用putExtra()和getExtras(),java,android,android-intent,Java,Android,Android Intent,我想将电影名称从MainActivity(ListView)发送到SongActivity。这就是我尝试过的 MainActivity.java public class MainActivity extends Activity{ Activity context; HttpPost httppost; StringBuffer buffer; HttpResponse response; HttpClient httpclient; ProgressDial

我想将电影名称从MainActivity(ListView)发送到SongActivity。这就是我尝试过的

MainActivity.java

public class MainActivity extends Activity{
  Activity context;
   HttpPost httppost;
   StringBuffer buffer;
   HttpResponse response;
   HttpClient httpclient;
   ProgressDialog pd;
   CustomAdapter adapter;
   ListView listProduct;
   ArrayList<String> records;
protected void onCreate(Bundle savedInstanceState) {
   //TODO Auto-generated method stub
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   context=this;
   records=new ArrayList<String>();
   listProduct=(ListView)findViewById(R.id.product_list);
   adapter=new CustomAdapter(context, R.layout.list_item,R.id.pro_name, records);
   listProduct.setAdapter(adapter);
   listProduct.setOnItemClickListener(new OnItemClickListener(){
       @Override
       public void onItemClick(AdapterView<?> arg0, View v, int position, long id){

           String sText = ((TextView) v).getText().toString();
           Intent songIntent = new Intent(getApplicationContext(), SongActivity.class);
           songIntent.putExtra("movie_name", sText );
           startActivity(songIntent);

       }

   });
   }
package com.example.telugump3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SongActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.song_activity);
        TextView tt = (TextView)findViewById(R.id.testing);
        Intent iin= getIntent();
        Bundle b = iin.getExtras();

        if(b!=null)
        {
            String j =(String) b.get("movie_name");
            tt.setText(j);
        }

    }
logcat

03-22 17:17:20.949: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 46
03-22 17:17:20.959: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 50
03-22 17:17:20.959: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 51
03-22 17:17:20.959: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 51
03-22 17:17:20.959: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 51
03-22 17:17:20.969: E/IMGSRV(22747): :0: PVRDRMOpen: TP3, ret = 53
03-22 17:17:20.999: D/OpenGLRenderer(22747): Enabling debug mode 0
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 11
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 12
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 13
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 14
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 15
03-22 17:17:23.149: I/dalvikvm(22747): Total arena pages for JIT: 16
03-22 17:17:23.159: I/dalvikvm(22747): Total arena pages for JIT: 17
03-22 17:17:23.159: I/dalvikvm(22747): Total arena pages for JIT: 18
03-22 17:17:23.159: I/dalvikvm(22747): Total arena pages for JIT: 19
03-22 17:17:23.159: I/dalvikvm(22747): Total arena pages for JIT: 20
03-22 17:17:25.289: D/AndroidRuntime(22747): Shutting down VM
03-22 17:17:25.289: W/dalvikvm(22747): threadid=1: thread exiting with uncaught exception (group=0x430ef140)
03-22 17:17:25.299: E/AndroidRuntime(22747): FATAL EXCEPTION: main
03-22 17:17:25.299: E/AndroidRuntime(22747): Process: com.example.telugump3, PID: 22747
03-22 17:17:25.299: E/AndroidRuntime(22747): java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
03-22 17:17:25.299: E/AndroidRuntime(22747):    at com.example.telugump3.MainActivity$1.onItemClick(MainActivity.java:51)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.widget.AdapterView.performItemClick(AdapterView.java:299)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.widget.AbsListView.performItemClick(AbsListView.java:1158)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2949)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.widget.AbsListView$3.run(AbsListView.java:3683)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.os.Handler.handleCallback(Handler.java:733)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.os.Handler.dispatchMessage(Handler.java:95)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.os.Looper.loop(Looper.java:149)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at android.app.ActivityThread.main(ActivityThread.java:5257)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at java.lang.reflect.Method.invokeNative(Native Method)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at java.lang.reflect.Method.invoke(Method.java:515)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
03-22 17:17:25.299: E/AndroidRuntime(22747):    at dalvik.system.NativeStart.main(Native Method)
03-22 17:17:27.259: I/Process(22747): Sending signal. PID: 22747 SIG: 9
我已尝试删除putExtra(),SongActivity启动得非常完美。但是如果我使用putExtra(),当我单击ListView中的任何项目时,应用程序就会崩溃。我只需要单击项目的文本,以便在其他活动中使用它。

尝试:
String j=(String)b.getString(“movie_name”)


java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.widget.TextView

您正在将
RelativeLayout
转换为
TextView
。检查您的
findViewById()
调用,如果存在这样的强制转换,或者您在发送时使用了错误的
id

,请执行此操作

 intent.putExtra("message", message);
在收到

  Intent intent = getIntent();
  String message = intent.getStringExtra("message");

onItemClick的参数v是listview项的根布局。这不是你的文本视图。所以你必须修改如下

//String sText = ((TextView) v).getText().toString();    
String sText = ((TextView) v.findViewById(R.id.[your TextView id])).getText().toString();

Ops,你对put或get EXTRACT没有问题,请注意错误 您的问题是,单击的目标是一个布局,而布局不能强制转换到TextView

java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.widget.TextView

在com.example.telugump3.MainActivity$1.onItemClick(MainActivity.java:51)

正如您所看到的,您的问题与额外的内容无关,但您知道该在哪里查看,所以让我们来看看您如何在<代码>主程序< /代码>

中声明您的项目适配器。
adapter = new CustomAdapter(context, R.layout.list_item,R.id.pro_name, records);
我假设参数如下:上下文、布局id、文本视图id、数据集。因此,项目布局中
TextView
的id是
R.id.pro\u name

现在让我们看看在您的
侦听器中发生了什么:

@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long id){
    // arg0 is the ListView
    // v is the whole item layout

    String sText = ((TextView) v).getText().toString();
    // you assumed that the whole layout was a TextView

    // ...
}
为什么这么糟糕?你必须在两个地方写
R.id.pro\u name
。你将应用程序的表示层和模型层混合在一起——你不是在问数据集,而是在问已经依赖数据集的人

选项2)前进之路

String sText = adapter.getItem(position).toString();

您请求的数据与列表视图使用的适配器相同。

我已更新。请告诉我它是否有效。问题在于布局,先生……问题已解决……无论如何,感谢您的帮助;)谢谢你,先生……你帮了我很多忙!将listitem布局从RelativeLayout更改为TextView…成功了!!当它工作的时候,这是一个坏习惯。您有一个完美的字符串数据集,可以使用(
records.get(position)
),这些字符串被送入列表视图使用的适配器(
adapter.getItem(position).toString()
)中,但您可以选择从文本视图(表示层)中选择数据。
String sText = adapter.getItem(position).toString();