綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] intent數值過去閃退?

[複製連結] 查看: 4769|回覆: 23|好評: 0
跳轉到指定樓層
樓主
gn02526721 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-11-10 23:25
10碎鑽
本帖最後由 gn02526721 於 2013-11-10 23:38 編輯

public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // TODO Auto-generated method stub
          listitemname=listtoread.getItemAtPosition(position).toString();
          itemintent=listitemname.substring(6,listitemname.length()-1);
            }}
          Wink;
因為我發現在點擊之後給定的名字會出現{name=XXX}這個樣子
所以我設定了抓取特定的字串來弄

readitem.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
          // TODO Auto-generated method stub
          Intent intent=new Intent();
          intent.setClass(readchoose.this, read.class);
          intent.putExtra("itemname", itemintent);
          startActivity(intent);
            }});

上面這是Intent的部分
我不大了解數值切換過去之後為何會閃退
我另外附上切換過去的JAVA檔吧

package com.example.LockInBrain;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

public class additem extends Activity {
        String addp,namep;
        TextView picuri=(TextView)findViewById(R.id.picuri);
        ImageView pic= (ImageView)findViewById(R.id.addpic);
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.additem);
               
                Intent intent = this.getIntent();
                //取得傳遞過來的資料  
                final String itemname = intent.getStringExtra("itemname");  
               
                ImageButton choosepic=(ImageButton) findViewById(R.id.choosepic);
                ImageButton addinto=(ImageButton) findViewById(R.id.addinto);
                final EditText picname=(EditText) findViewById(R.id.picname);
               
                picname.setText(itemname);
               
                choosepic.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                Intent intentpic = new Intent();  
                /* 开启Pictures画面Type设定为image */  
                intentpic.setType("image/*");  
                /* 使用Intent.ACTION_GET_CONTENT这个Action */  
                intentpic.setAction(Intent.ACTION_GET_CONTENT);   
                /* 取得相片后返回本画面 */
                startActivityForResult(intentpic, 1);  
                        }});
               
                addinto.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String s2=picuri.getText().toString();
                                String s1=addp;
                                try{
                                FileWriter fw = new FileWriter("/sdcard/"+itemname+".txt", false);
                                BufferedWriter bw = new BufferedWriter(fw); //將BufferedWeiter與FileWrite物件做連結
                                bw.write("""+s1+"",""+s2+""");
                                bw.newLine();
                                bw.close();
                            }catch(IOException e){
                               e.printStackTrace();
                            }
                        }});
               
        }

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               
                super.onActivityResult(requestCode, resultCode, data);
        // 有選擇檔案
        if ( resultCode == RESULT_OK )
        {   // 取得檔案的 Uri
            Uri uri = data.getData();
            if( uri != null )
            {   // 利用 Uri 顯示 ImageView 圖片
                pic.setImageURI( uri );
                picuri.setText( uri.toString() );
                addp=picuri.toString();
            }
            else
            {
                    picuri.setText("無效的檔案路徑 !!");
            }
        }
        else
        {
                picuri.setText("取消選擇檔案 !!");
        }
        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.title, menu);
                return true;
        }

}

additem.java

3.32 KB, 下載次數: 1, 下載積分: 碎鑽 -1 個

最佳答案

查看完整內容

我看到你程式有地方須修改 修改後試試看 因為你給的錯誤訊息不知道哪裡錯 你貼的程式碼 第22行TextView picuri=(TextView)findViewById(R.id.picuri); 這個全域變數改成TextView picuri; 試試看行不行
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
lkk47 | 收聽TA | 只看該作者
發表於 2013-11-10 23:25
我看到你程式有地方須修改  修改後試試看  因為你給的錯誤訊息不知道哪裡錯 你貼的程式碼  第22行TextView picuri=(TextView)findViewById(R.id.picuri); 這個全域變數改成TextView picuri;  
試試看行不行
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

板凳
xjxuvup | 收聽TA | 只看該作者
發表於 2013-11-10 23:33
我建議你可以把logcat裡面紅色的部份貼出來
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

地板
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-10 23:41
xjxuvup 發表於 2013-11-10 23:33
我建議你可以把logcat裡面紅色的部份貼出來

忘了可以貼LogCat的錯誤碼了
另外我程式碼有改動喔
幫我稍微看看
拜託了^^

11-10 10:39:56.864: E/AndroidRuntime(787): FATAL EXCEPTION: main
11-10 10:39:56.864: E/AndroidRuntime(787): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.LockInBrain/com.example.LockInBrain.additem}: java.lang.NullPointerException
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.os.Handler.dispatchMessage(Handler.java:99)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.os.Looper.loop(Looper.java:137)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread.main(ActivityThread.java:5103)
11-10 10:39:56.864: E/AndroidRuntime(787):         at java.lang.reflect.Method.invokeNative(Native Method)
11-10 10:39:56.864: E/AndroidRuntime(787):         at java.lang.reflect.Method.invoke(Method.java:525)
11-10 10:39:56.864: E/AndroidRuntime(787):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-10 10:39:56.864: E/AndroidRuntime(787):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-10 10:39:56.864: E/AndroidRuntime(787):         at dalvik.system.NativeStart.main(Native Method)
11-10 10:39:56.864: E/AndroidRuntime(787): Caused by: java.lang.NullPointerException
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.Activity.findViewById(Activity.java:1853)
11-10 10:39:56.864: E/AndroidRuntime(787):         at com.example.LockInBrain.additem.<init>(additem.java:22)
11-10 10:39:56.864: E/AndroidRuntime(787):         at java.lang.Class.newInstanceImpl(Native Method)
11-10 10:39:56.864: E/AndroidRuntime(787):         at java.lang.Class.newInstance(Class.java:1130)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
11-10 10:39:56.864: E/AndroidRuntime(787):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
11-10 10:39:56.864: E/AndroidRuntime(787):         ... 11 more
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

5
lkk47 | 收聽TA | 只看該作者
發表於 2013-11-11 10:57
使用bundle方式傳遞看看
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

6
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-11 11:18
//MainActivity.java
Intent intent = new Intent();
intent.putExtra("Type", 123);// ==>這裡的123你可以用數值或是boolean或是文字都可以,存跟取的時候型態要一致
intent.setClass(MainActivity.this, bbbb.class);
startActivity(intent);

//bbbb.java
Bundle bundle = this.getIntent().getExtras();
Int type = bundle.getInt("Type");
這樣應該就可以了~~~

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
gn02526721 + 1 + 1 很給力!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

7
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-11 11:41
本帖最後由 gn02526721 於 2013-11-11 11:44 編輯
iamjason008 發表於 2013-11-11 11:18
//MainActivity.java
Intent intent = new Intent();
intent.putExtra("Type", 123);// ==>這裡的123你可以 ...



我的是這樣
A.class
intent.setClass(readchoose.this, read.class);
          intent.putExtra("itemname", itemintent);
          startActivity(intent);
B.class
final String itemname = intent.getStringExtra("itemname");

傳送與接收都是一致的不是嗎
我想問一下怎麼會閃退
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

8
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-11 11:45
intent.putExtra("Type", Value);==>這裡的value可以是各種型態
只要接的那邊有對應到,就不會有什麼問題了
所以用intent.putExtra("Type", "TypeOne");//也是可以的

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
gn02526721 + 1 + 1 很給力!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

9
 樓主| gn02526721 | 收聽TA | 只看該作者
發表於 2013-11-11 12:00
本帖最後由 gn02526721 於 2013-11-11 12:09 編輯
iamjason008 發表於 2013-11-11 11:45
intent.putExtra("Type", Value);==>這裡的value可以是各種型態
只要接的那邊有對應到,就不會有什麼問題了 ...


可是數值對應完完全全是一樣的
照理來說應該沒問題才對阿

還是說我B.class的地方應該改成
Bundle bundle = this.getIntent().getExtras();
final String itemname = bundle.getString("itemname");


???
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

10
iamjason008 | 收聽TA | 只看該作者
發表於 2013-11-11 12:16
在main存的時候用什麼型態,在b就用同樣的型態去接
所以後面用String去接是對的啊

會不會是你的listitemname,沒有抓到字串?!

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
gn02526721 + 1 + 1 很給力!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則