2014-05-12 134 views
-2

我與Android編程和網絡noob,我不明白爲什麼我的應用程序崩潰時,我設置一個文本TextViewsetText崩潰我的應用程序

我的第一個Activity是一個問卷:

public class MainActivity extends ActionBarActivity { 

private static Spinner spinner; 
private static LinkedList<Integer> list; 
private static EditText editText1, editText2; 
private RadioGroup rG; 
public ArrayList<String> info; 

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

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 

} 

private static void ageSpinner(View v) { 

    list = new LinkedList<Integer>(); 

    for (Integer i = 0; i <= 110; i++) { 

     list.add(i); 

    } 

    ArrayAdapter<Integer> spinnerAdapter = new ArrayAdapter<Integer>(
      v.getContext(), android.R.layout.simple_spinner_item, list); 
    spinnerAdapter 
      .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinner.setAdapter(spinnerAdapter); 

} 

public void goResult(View v) { 

    info = new ArrayList<String>(); 

    editText1 = (EditText) findViewById(R.id.editText1); 
    editText2 = (EditText) findViewById(R.id.editText2); 

    info.add(editText1.getText().toString()); 

    info.add(editText2.getText().toString()); 

    rG = (RadioGroup) findViewById(R.id.radioGroup1); 
    int select = rG.getCheckedRadioButtonId(); 

    if (select == R.id.radio0) { 

     info.add("Male"); 

    } else { 
     info.add("Female"); 
    } 

    info.add(spinner.getSelectedItem().toString()); 

    Intent i = new Intent(this, Result.class); 

    i.putExtra("miki", info); 
    startActivity(i); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 

     spinner = (Spinner) rootView.findViewById(R.id.spinner1); 
     ageSpinner(rootView); 

     return rootView; 
    } 
} 

} 

,另一類是打印的結果,我從過去的活動通過;

public class Result extends ActionBarActivity { 

private TextView nombre; 
private TextView edad; 
private TextView sex; 
private List<String> infos; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 


    getResult(); 

} 


public void getResult(){ 
    Bundle b = this.getIntent().getExtras(); 

    infos = new ArrayList<String>(); 
    nombre = (TextView) findViewById(R.id.textView2); 
    edad = (TextView) findViewById(R.id.textView4); 
    sex = (TextView) findViewById(R.id.textView6); 



    infos = b.getStringArrayList("miki"); 

    nombre.setText(infos.get(1).toString() + " " + infos.get(0).toString()); 
    edad.setText(infos.get(2).toString()); 
    sex.setText(infos.get(3).toString()); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.result, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_result, 
       container, false); 





     return rootView; 
    } 
} 

} 

這是德logcat的:

05-12 05:11:04.855: E/AndroidRuntime(1357): FATAL EXCEPTION: main 
05-12 05:11:04.855: E/AndroidRuntime(1357): Process: com.example.lab_1, PID: 1357 
05-12 05:11:04.855: E/AndroidRuntime(1357): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lab_1/com.example.lab_1.Result}: java.lang.NullPointerException 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.os.Handler.dispatchMessage(Handler.java:102) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.os.Looper.loop(Looper.java:136) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at java.lang.reflect.Method.invoke(Method.java:515) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at dalvik.system.NativeStart.main(Native Method) 
05-12 05:11:04.855: E/AndroidRuntime(1357): Caused by: java.lang.NullPointerException 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at com.example.lab_1.Result.getResult(Result.java:53) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at com.example.lab_1.Result.onCreate(Result.java:36) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.Activity.performCreate(Activity.java:5231) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
05-12 05:11:04.855: E/AndroidRuntime(1357):  ... 11 more 

任何想法?

謝謝!

+1

帖子你的logcat錯誤。 – GrIsHu

+0

試試這個'b.putStringArrayList(「miki」,info);'到你的包 –

+0

在這個佈局文件中你聲明瞭UI組件嗎? – elbaulp

回答

1

都在你的MainActivity首先添加如下ArrayList<String>Intent

Intent i = new Intent(this, Result.class); 
i.putStringArrayListExtra("miki", info); 
startActivity(i); 

在你Result活動叫你getResult();方法如下您if (savedInstanceState == null) {條件之前:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 

     getResult(); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 
} 
+0

它的工作原理!謝謝老兄!! :D – j4m3s0n

+0

很高興幫助:) @ j4m3s0n – GrIsHu

0

你有NullPointerExceptiongetResult(可能是因爲所有findViewById呼叫正在返回Null

可能是你有你的片段XML聲明你的UI組件(TextView等),並試圖從R.layout.activity_result或檢索反之亦然。檢查您是否在R.layout.fragment_main中聲明瞭UI組件,並從onCreateView中檢索它們。

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_result, 
      container, false); 
    nombre = (TextView) rootView.findViewById(R.id.textView2); 
    edad = (TextView) rootView.findViewById(R.id.textView4); 
    sex = (TextView) rootView.findViewById(R.id.textView6); 
    return rootView; 
}